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 ...
随机推荐
- .net Stream篇(六)
BufferedStream 目录: 简单介绍一下BufferedStream 如何理解缓冲区? BufferedStream的优势 从BufferedStream 中学习装饰模式 如何理解装饰模式 ...
- Graphics 小记
1.切图 drowg.DrawImage(productImg1, new System.Drawing.Rectangle(30, 30, 300, 300), new System.Drawing ...
- vs2010 在win8附加进程调试小技巧
在win8 附加进程居然找不到 我要的是iis 名为HKFlight的web的进程(下面2个勾也勾上了,就是找不到它)(下图是管理员身份运行截图) 解决方法:打开vs2010 用管理员身份打开...其 ...
- VS vs2012制作安装包
VS vs2012制作安装包 一.参考地址: http://www.3fwork.com/b100/000196MYM014103/
- Multimap的初使用
之前不知道这个类型使用,在朋友的推荐下进行了个实际操作. 类似这种查询,我需要将他们归类拿出来,如果招以前那么拿的话可能要套挺多个循环的. 首先根据查询得到一个 List<Map<Stri ...
- Python——selenium爬取斗鱼房间信息
from selenium import webdriver import os import json import time class Douyu: def __init__(self): # ...
- 绿色版NVM安装与配置详细说明
绿色版本(不需要安装,直接解压,然后配置环境变量等) 由于最初发布的nvm并不支持window,所以如果希望可以像在*nix上一样控制node的版本,有两种选择: nvm-windows nodi ...
- 基于linux内核包过滤技术的应用网关
目录 基于linux内核包过滤技术的应用网关 硬件形态 基本原理 应用场景 主要功能 其他功能 客户定制 基于linux内核包过滤技术的应用网关 硬件形态 基本原理 应用场景 媒体内容过滤和深度识别 ...
- python tkinter 基本操作与事件
基本操作 import tkinter as tk # 引入tk 包 win=tk.Tk() # 引入窗口对象 win.title("窗口标题") # 窗口标题 win.geome ...
- 【算法笔记】B1011 A+B 和 C
1011 A+B 和 C (15 分) 给定区间 [−231,231] 内的 3 个整数 A.B 和 C,请判断 A+B 是否大于 C. 输入格式: 输入第 1 行给出正整数 T (≤10 ...