python读取excel表格生成sql语句 第一版
由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦 作为程序猿当然要想办法解决,用Python写一个程序解决
需要用到 xlrd linux下 sudo pip install xlrd
主要是适用于db2数据库
excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置。这里程序里有纠错,这个程序就是将sql语句拼好。

__author__ = 'zhanglei'
# coding:utf-8 import xlrd
import re data = xlrd.open_workbook("1.xlsx")
table = data.sheets()[0] temp = table.row_values(0)[0] tableName = re.findall("[A-Z].*\w+", temp)[0] nrows = table.nrows
#print nrows
sql = "create table " + tableName + "( \n"
for rownum in range(2, nrows):
row = table.row_values(rownum) if row and rownum != (nrows - 1): if row[1] == "ID":
temp = float(row[3])
sql += row[1] + " " + row[2] + "(" + str(int(temp)) + ") " + "PRIMARY KEY,\n"
else:
sql += row[1] + " "
if re.search("DECI.*", row[2]):
sql += " " + row[2]
elif row[2] == "NUMBER" and row[3] == 8:
sql += " int "
elif row[2] == "NUMBER" and row[3] == 1:
sql += " smallint "
elif row[2] == "NUMBER" and row[3] > 10:
sql += "bigint"
elif row[2] == "DATETIME":
sql += " timestamp "
elif row[2] == "DATE":
sql += " date "
else:
temp = float(row[3])
sql += " " + row[2] + "(" + str(int(temp)) + ") " if row[4] == "Y" and row[5] == "Y":
sql += " NOT NULL UNIQUE,\n" elif row[4] == "Y" and row[5] != "Y":
sql += " NOT NULL,\n"
elif row[4] != "Y" and row[5] != "Y":
sql += ",\n"
else:
sql += row[1] + " " if re.search("DECI.*", row[2]):
sql += " " + row[2]
else:
temp = float(row[3])
sql += " " + row[2] + "(" + str(int(temp)) + ") " if row[4] == "Y" and row[5] == "Y":
sql += " NOT NULL UNIQUE,\n" elif row[4] == "Y" and row[5] != "Y":
sql += " NOT NULL,\n"
elif row[4] != "Y" and row[5] != "Y":
sql += " \n)" print sql
create table BH_Business(
ID VARCHAR(64) PRIMARY KEY,
BUSI_SERIAL_NO VARCHAR(50) NOT NULL UNIQUE,
BUSI_CODE VARCHAR(10) NOT NULL,
BRANCH_CODE VARCHAR(10) NOT NULL,
TELLER_CODE VARCHAR(10) NOT NULL,
AMT DECIMAL(14,2) NOT NULL,
CURRENCY VARCHAR(6) NOT NULL,
CUSTOM_LVL NUMBER(1) NOT NULL,
STATE VARCHAR(2) NOT NULL,
REMARKS VARCHAR(200) ,
WEIGHT_VALUE NUMBER(8) NOT NULL,
TMP_WEIGHT_VALUE NUMBER(8) NOT NULL,
URGENT_FLAG NUMBER(1) NOT NULL,
ACCP_TIME timestamp NOT NULL,
CLOSE_TIME timestamp NOT NULL,
WORK_FLOW_ID VARCHAR(200) ,
TMP_UNDO_FLAG NUMBER(1) NOT NULL,
SYS_ID VARCHAR(6) NOT NULL,
MEDIUM VARCHAR(8) NOT NULL,
CRT_TELLER_ID VARCHAR(50) NOT NULL,
CRT_TIME timestamp NOT NULL,
CRT_IP VARCHAR(50) NOT NULL,
UPD_TELLER_ID VARCHAR(50) ,
UPD_TIME timestamp ,
UPD_IP VARCHAR(50)
)
YG]J)OW%4)0F.jpg)
YG]J)OW%4)0F.jpg)
python读取excel表格生成sql语句 第一版的更多相关文章
- Excel表格生成sql语句
假如excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age ,在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...
- Excel数据生成Sql语句的方法
选中想要生成的列,套用表格格式,选中表包含标题的选项确定,然后在最右边的一列第二行处,点击函数功能,选择CONCATENATE,在文本里输入想要的结构即可 代码如下 复制代码 ,=CONCATENA ...
- python读取Excel表格文件
python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...
- Java 自定义注解及注解读取解析--模拟框架生成SQL语句
假设们使用一张简单的表,结构如下: 定义注解: 表注解: package com.xzlf.annotation; import java.lang.annotation.ElementType; i ...
- Python读取Excel表格
前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...
- [转] Windows下使用Python读取Excel表格数据
http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...
- 读取excel数据生成sql脚本
package com.interact.util; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.b ...
- 使用Excel自动生成sql语句
在近一段日子里,进入了新的项目组,由于项目需要,经常要将一些Excel表中的数据导入数据库中,以前并没有过多的接触过数据导入与数据处理,对于我来说比较痛苦,今天下午花了几个小时处理数据,但是同事给我提 ...
- python读取excel表格中的数据
使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...
随机推荐
- 模板方法(Template Method)模式
/* * 抽象模版(AbstractClass)角色有如下的责任: 定义了一个或多个抽象操作,以便让子类实现.这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤. 定义并实现了一个模版方法.这个模 ...
- .net IAsyncResult 异步操作
//定义一个委托 public delegate int DoSomething(int count); //BeginInvoke 的回调函数 private static void Execute ...
- Java并发编程的3个特性
一.原子性 原子行:即一个或者多个操作作为一个整体,要么全部执行,要么都不执行,并且操作在执行过程中不会被线程调度机制打断:而且这种操作一旦开始,就一直运行到结束,中间不会有任何上下文切换(conte ...
- access denied for user 'root'@'localhost'
编辑mysql配置文件my.ini(在mysql的安装目录下,我的在D:\Program Files\MySQL\MySQL Server 5.0\my.ini),在[mysqld]这个条目下加入 s ...
- JSON Path表达式
JSON Path 描述 $ 表示根元素 @ 表示当前节点 . 表示子节点 .. 选择所有符合条件的节点 * 所有节点 [] 迭代器标识,如数组下标 [,] 支持迭代器中多选 [start:en ...
- Sqoop 遇到的问题
1. 想用 sqoop 增量的方式导入到 hive.运行下面的命令: sqoop import --connect jdbc:mysql://192.168.7.159:3306/test --u ...
- Linux原理与实践
Linux 中的文件及权限 -rwxr-xr-x 1 cat animal 68 03-31 21:47 sleep.sh 三种用户角色: r 4 w 2 x 1 user ,文件的所有者 group ...
- delphi 给字符指针分配内存
今天,对接第三方dll的时候出现如下问题: 接口声明如下: long BL_tradeBalance (char *MerchantNumber,char *PosId,char *OperatorN ...
- 自动判断PC端、手机端跳往不同的域名JS实现代码
输入相同域名,在pc端和移动端会出现不同的页面效果,一种是用栅格系统实现自适应, 更多的是设计两套不同的模板和两个二级域名或者一个主域名和一个二级域名(就是有区别就可以了); js代码判断浏览器的用户 ...
- WCF 客户端连接慢
WCF客户端第一次连接超过1分钟,以后再连接就快了. 在 Config中加入 <basicHttpBinding> <binding name="BasicHttpBind ...