由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决

需要用到 xlrd linux下 sudo pip install xlrd

主要是适用于db2数据库

excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置。这里程序里有纠错,这个程序就是将sql语句拼好。

  1. __author__ = 'zhanglei'
  2. # coding:utf-8
  3.  
  4. import xlrd
  5. import re
  6.  
  7. data = xlrd.open_workbook("1.xlsx")
  8. table = data.sheets()[0]
  9.  
  10. temp = table.row_values(0)[0]
  11.  
  12. tableName = re.findall("[A-Z].*\w+", temp)[0]
  13.  
  14. nrows = table.nrows
  15. #print nrows
  16. sql = "create table " + tableName + "( \n"
  17. for rownum in range(2, nrows):
  18. row = table.row_values(rownum)
  19.  
  20. if row and rownum != (nrows - 1):
  21.  
  22. if row[1] == "ID":
  23. temp = float(row[3])
  24. sql += row[1] + " " + row[2] + "(" + str(int(temp)) + ") " + "PRIMARY KEY,\n"
  25. else:
  26. sql += row[1] + " "
  27. if re.search("DECI.*", row[2]):
  28. sql += " " + row[2]
  29. elif row[2] == "NUMBER" and row[3] == 8:
  30. sql += " int "
  31. elif row[2] == "NUMBER" and row[3] == 1:
  32. sql += " smallint "
  33. elif row[2] == "NUMBER" and row[3] > 10:
  34. sql += "bigint"
  35. elif row[2] == "DATETIME":
  36. sql += " timestamp "
  37. elif row[2] == "DATE":
  38. sql += " date "
  39. else:
  40. temp = float(row[3])
  41. sql += " " + row[2] + "(" + str(int(temp)) + ") "
  42.  
  43. if row[4] == "Y" and row[5] == "Y":
  44. sql += " NOT NULL UNIQUE,\n"
  45.  
  46. elif row[4] == "Y" and row[5] != "Y":
  47. sql += " NOT NULL,\n"
  48. elif row[4] != "Y" and row[5] != "Y":
  49. sql += ",\n"
  50. else:
  51. sql += row[1] + " "
  52.  
  53. if re.search("DECI.*", row[2]):
  54. sql += " " + row[2]
  55. else:
  56. temp = float(row[3])
  57. sql += " " + row[2] + "(" + str(int(temp)) + ") "
  58.  
  59. if row[4] == "Y" and row[5] == "Y":
  60. sql += " NOT NULL UNIQUE,\n"
  61.  
  62. elif row[4] == "Y" and row[5] != "Y":
  63. sql += " NOT NULL,\n"
  64. elif row[4] != "Y" and row[5] != "Y":
  65. sql += " \n)"
  66.  
  67. print sql
  1.  
  1. create table BH_Business(
  2. ID VARCHAR(64) PRIMARY KEY,
  3. BUSI_SERIAL_NO VARCHAR(50) NOT NULL UNIQUE,
  4. BUSI_CODE VARCHAR(10) NOT NULL,
  5. BRANCH_CODE VARCHAR(10) NOT NULL,
  6. TELLER_CODE VARCHAR(10) NOT NULL,
  7. AMT DECIMAL(14,2) NOT NULL,
  8. CURRENCY VARCHAR(6) NOT NULL,
  9. CUSTOM_LVL NUMBER(1) NOT NULL,
  10. STATE VARCHAR(2) NOT NULL,
  11. REMARKS VARCHAR(200) ,
  12. WEIGHT_VALUE NUMBER(8) NOT NULL,
  13. TMP_WEIGHT_VALUE NUMBER(8) NOT NULL,
  14. URGENT_FLAG NUMBER(1) NOT NULL,
  15. ACCP_TIME timestamp NOT NULL,
  16. CLOSE_TIME timestamp NOT NULL,
  17. WORK_FLOW_ID VARCHAR(200) ,
  18. TMP_UNDO_FLAG NUMBER(1) NOT NULL,
  19. SYS_ID VARCHAR(6) NOT NULL,
  20. MEDIUM VARCHAR(8) NOT NULL,
  21. CRT_TELLER_ID VARCHAR(50) NOT NULL,
  22. CRT_TIME timestamp NOT NULL,
  23. CRT_IP VARCHAR(50) NOT NULL,
  24. UPD_TELLER_ID VARCHAR(50) ,
  25. UPD_TIME timestamp ,
  26. UPD_IP VARCHAR(50)
  27. )

python读取excel表格生成sql语句 第一版的更多相关文章

  1. Excel表格生成sql语句

    假如excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age ,在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...

  2. Excel数据生成Sql语句的方法

    选中想要生成的列,套用表格格式,选中表包含标题的选项确定,然后在最右边的一列第二行处,点击函数功能,选择CONCATENATE,在文本里输入想要的结构即可  代码如下 复制代码 ,=CONCATENA ...

  3. python读取Excel表格文件

    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...

  4. Java 自定义注解及注解读取解析--模拟框架生成SQL语句

    假设们使用一张简单的表,结构如下: 定义注解: 表注解: package com.xzlf.annotation; import java.lang.annotation.ElementType; i ...

  5. Python读取Excel表格

    前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...

  6. [转] Windows下使用Python读取Excel表格数据

    http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...

  7. 读取excel数据生成sql脚本

    package com.interact.util; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.b ...

  8. 使用Excel自动生成sql语句

    在近一段日子里,进入了新的项目组,由于项目需要,经常要将一些Excel表中的数据导入数据库中,以前并没有过多的接触过数据导入与数据处理,对于我来说比较痛苦,今天下午花了几个小时处理数据,但是同事给我提 ...

  9. python读取excel表格中的数据

    使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...

随机推荐

  1. CreateExcel 导出Excel

    public class CreateExcel { /// <summary> /// 用Excel组件导出Excel文件 /// </summary> /// <pa ...

  2. CentOS目录与文件操作

    pwd:查看当前目录 touch:创建文件 touch a.c ls:查看当前目录下文件,也可以ls /tmp查看tmp下的文件 rm:删除文件 rm a.c,也可以rm a.c -rf 强制删除 c ...

  3. docker 镜像创建

    dockerfile FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE COPY ${source:-/} . ENTRYPOI ...

  4. hive的安装与配置 mysql安装 启动

    三种模式 内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接 本地独立模式:在本地安装Mysql,吧元数据放到mySql内 远程模式:元数据放置在远程的Mysql数据库 1.下载Hive安 ...

  5. java 列表与集合总结

    列表与集合 (一切输出都用for each!丢弃迭代器) 列表List 1 顺序表 Arraylist  适用于静态查找2   链式双向表 Linkedlist 适用于增删该查3 (容器) Vecto ...

  6. ubuntu安装nginx与配置

    命令行安装:(当前时间为2018.11,版本为1.10.3) sudo apt-get install nginx 安装好的文件位置: /usr/sbin/nginx:主程序 /etc/nginx:存 ...

  7. jmete察看结果树和body data乱码问题的解决办法

    jmeter察看结果树乱码问题的解决办法: (1)在jmeter的bin目录下找到jmeter.properties这个文件添加sampleresult.default.encoding=utf-8 ...

  8. 【bzoj5093】 [Lydsy1711月赛]图的价值 组合数+斯特林数+NTT

    Description "简单无向图"是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向 ...

  9. CBV请求流程源码分析

    一.CBV流程解析 urls.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^book/', views.BookView.as ...

  10. CF165D Beard Graph

    $ \color{#0066ff}{ 题目描述 }$ 给定一棵树,有m次操作. 1 x 把第x条边染成黑色 2 x 把第x条边染成白色 3 x y 查询x~y之间的黑边数,存在白边输出-1 \(\co ...