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 ...
随机推荐
- CreateExcel 导出Excel
public class CreateExcel { /// <summary> /// 用Excel组件导出Excel文件 /// </summary> /// <pa ...
- CentOS目录与文件操作
pwd:查看当前目录 touch:创建文件 touch a.c ls:查看当前目录下文件,也可以ls /tmp查看tmp下的文件 rm:删除文件 rm a.c,也可以rm a.c -rf 强制删除 c ...
- docker 镜像创建
dockerfile FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE COPY ${source:-/} . ENTRYPOI ...
- hive的安装与配置 mysql安装 启动
三种模式 内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接 本地独立模式:在本地安装Mysql,吧元数据放到mySql内 远程模式:元数据放置在远程的Mysql数据库 1.下载Hive安 ...
- java 列表与集合总结
列表与集合 (一切输出都用for each!丢弃迭代器) 列表List 1 顺序表 Arraylist 适用于静态查找2 链式双向表 Linkedlist 适用于增删该查3 (容器) Vecto ...
- ubuntu安装nginx与配置
命令行安装:(当前时间为2018.11,版本为1.10.3) sudo apt-get install nginx 安装好的文件位置: /usr/sbin/nginx:主程序 /etc/nginx:存 ...
- jmete察看结果树和body data乱码问题的解决办法
jmeter察看结果树乱码问题的解决办法: (1)在jmeter的bin目录下找到jmeter.properties这个文件添加sampleresult.default.encoding=utf-8 ...
- 【bzoj5093】 [Lydsy1711月赛]图的价值 组合数+斯特林数+NTT
Description "简单无向图"是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向 ...
- CBV请求流程源码分析
一.CBV流程解析 urls.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^book/', views.BookView.as ...
- CF165D Beard Graph
$ \color{#0066ff}{ 题目描述 }$ 给定一棵树,有m次操作. 1 x 把第x条边染成黑色 2 x 把第x条边染成白色 3 x y 查询x~y之间的黑边数,存在白边输出-1 \(\co ...