第一种sql格式:

 CREATE TABLE
prpcitem_car
(
proposalno CHAR(22) NOT NULL,
itemno DECIMAL(8,0) NOT NULL,
riskcode CHAR(3) NOT NULL,
insuredtypecode CHAR(2),
carinsuredrelation CHAR(1),
clausetype CHAR(3),
licenseno VARCHAR(20),
licensetype CHAR(3),
licensecolorcode CHAR(2),
nonlocalflag CHAR(1),
licenseflag CHAR(1),
vehicletype CHAR(4),
carkindcode CHAR(3),
hkflag CHAR(1),
hklicenseno CHAR(20),
engineno VARCHAR(30),
vinno VARCHAR(18),
frameno VARCHAR(30),
runareacode CHAR(10),
runareaname VARCHAR(60),
runmiles DECIMAL(14,2),
enrolldate DATE,
useyears DECIMAL(15,255),
vehiclecategory CHAR(3),
columvehiclecategoryn_68 CHAR(3),
modelcodealias VARCHAR(100),
modelcode CHAR(14),
brandname VARCHAR(200) NOT NULL,
aliasname VARCHAR(100),
countrynature CHAR(2),
countrycode CHAR(3),
usenaturecode CHAR(3),
businessclasscode CHAR(1),
seatcount DECIMAL(15,255),
toncount DECIMAL(10,3),
exhaustscale DECIMAL(8,4),
cylindercount INTEGER,
iscriterion INTEGER,
lossratio CHAR(5),
salesname VARCHAR(50),
salesnumber VARCHAR(20),
salesphone VARCHAR(15),
carcounts INTEGER,
isdropinvisitinsure INTEGER,
carloteququality DECIMAL(14,2),
colorcode CHAR(6),
safedevice CHAR(30),
coefficient1 DECIMAL(8,4),
coefficient2 DECIMAL(8,4),
coefficient3 DECIMAL(8,4),
othernature VARCHAR(10),
ratecode CHAR(8),
rationname VARCHAR(60),
makedate DATE,
carusage VARCHAR(20),
currency CHAR(3),
purchaseprice DECIMAL(14,2),
actualvalue DECIMAL(14,2),
invoiceno CHAR(20),
carloanflag CHAR(1),
cardealercode CHAR(16),
cardealername VARCHAR(120),
remark VARCHAR(40),
carid CHAR(10),
versionno CHAR(4),
monopolyflag CHAR(1),
monopolycode VARCHAR(22),
monopolyname VARCHAR(80),
newcarflag CHAR(1),
loanvehicleflag CHAR(1),
transfervehicleflag CHAR(1),
transferdate DATE,
operationarea VARCHAR(5),
inserttimeforhis DATETIME YEAR TO SECOND,
operatetimeforhis DATETIME YEAR TO SECOND,
startsitename VARCHAR(255),
discounttype VARCHAR(255),
drivertype VARCHAR(255),
endsitename VARCHAR(255),
carcusttype CHAR(2),
nodamageyears VARCHAR(4),
modeldemandno VARCHAR(50),
energytype CHAR(1),
fueltype CHAR(2),
carprooftype CHAR(2),
carproofno CHAR(50),
carproofdate DATE,
certificatedate DATE,
isremote CHAR(1),
fullendor CHAR(1),
issilageharvester CHAR(1),
flag CHAR(10),
licenseno1 CHAR(10),
licenseno2 VARCHAR(20),
licenseno3 CHAR(10),
vehiclebrand VARCHAR(20),
vehicletypedescription VARCHAR(5),
groupcode VARCHAR(50),
groupstartdate DATE,
groupenddate DATE,
PRIMARY KEY (proposalno, itemno) CONSTRAINT pk_citem_car,
FOREIGN KEY (proposalno) REFERENCES prpcmain (proposalno) CONSTRAINT fkb28a3afd9b27a158
);

对应python语句:

 import json
def get_list(sqlLines):
list =[]
str =''
table_name=''
primary_key=''
foreign_key=''
for line in sqlLines:
if 'PRIMARY KEY' in line:
primary_key=line[line.find('(')+1:line.find(')')]
if 'FOREIGN KEY' in line:
foreign_key=line[line.find('(')+1:line.find(')')]
str+=line
list.append(str)
list.append(primary_key)
list.append(foreign_key)
return list def get_json(list):
str=list[0]
primary_key=list[1]
foreign_key=list[2]
table_name=str[str.find('CREATE TABLE')+len('CREATE TABLE'):str.find('(')].strip()
str= str[str.find('(')+1:str.rfind(')')].strip()
str =str.lower()
str =str.replace(' not null','').strip()
if 'primary key' in str:
str=str[0:str.find('primary key')]
if 'foreign key' in str:
str=str[0:str.find('foreign key')]
if 'datetime year to second' in str:
str= str.replace('datetime year to second','string') str_lines =str.splitlines(False)
json_list=[]
for line in str_lines:
json_dict={}
lines =line.split()
if len(lines)>=2:
name=lines[0]
type=lines[1][0:len(lines[1])-1]
json_dict['name']=name if 'date' in type:
type='string'
if 'decimal' in type:
type='string'
json_dict['type']=type
if name in primary_key:
json_dict['primary']=1
if name in foreign_key:
json_dict['foreign']=1
else:
continue
json_list.append(json_dict)
return json_list def load():
sqlStr =open('C:/Users/Administrator.PC--20150529IGF/Desktop/prpcitem_car.txt')
sqlLines =sqlStr.readlines(100000)
sql_list =get_list(sqlLines)
str =get_json(sql_list)
jsonS =json.dumps(str)
print(jsonS)
load()

---------------------

第二种sql格式:

-- Start of generated script for 10.136.1.5-DB2-LIS (db2inst1)
-- Apr-10-2017 at 16:35:18 CREATE TABLE "DB2INST1"."LLCASE"
("CASENO" VARCHAR(20) NOT NULL,
"RGTNO" VARCHAR(20),
"RGTTYPE" VARCHAR(1) NOT NULL,
"RGTSTATE" VARCHAR(2) NOT NULL,
"CUSTOMERNO" VARCHAR(24) NOT NULL,
"CUSTOMERNAME" VARCHAR(120),
"ACCIDENTTYPE" VARCHAR(1),
"RECEIPTFLAG" VARCHAR(1),
"HOSPITALFLAG" VARCHAR(1),
"SURVEYFLAG" VARCHAR(1),
"RGTDATE" DATE,
"HANDLEDATE" DATE,
"CLAIMCALDATE" DATE,
"AFFIXGETDATE" DATE,
"FEEINPUTFLAG" VARCHAR(1),
"INHOSPITALDATE" DATE,
"OUTHOSPITALDATE" DATE,
"INVALIHOSDAYS" SMALLINT,
"INHOSPITALDAYS" SMALLINT,
"DIANOSEDATE" DATE,
"POSTALADDRESS" VARCHAR(300),
"PHONE" VARCHAR(20),
"ACCSTARTDATE" DATE,
"ACCIDENTDATE" DATE,
"ACCIDENTSITE" VARCHAR(60),
"DEATHDATE" DATE,
"CUSTSTATE" VARCHAR(2),
"ACCDENTDESC" VARCHAR(6000),
"CUSTBIRTHDAY" DATE,
"CUSTOMERSEX" VARCHAR(1),
"CUSTOMERAGE" DECIMAL(5, 0),
"IDTYPE" VARCHAR(1),
"IDNO" VARCHAR(20),
"HANDLER" VARCHAR(10),
"UWSTATE" VARCHAR(10),
"DEALER" VARCHAR(10),
"APPEALFLAG" VARCHAR(1),
"TOGETHERGET" VARCHAR(1),
"GRPDEALFLAG" VARCHAR(1),
"GETMODE" VARCHAR(2),
"GETINTV" SMALLINT,
"CALFLAG" VARCHAR(1),
"UWFLAG" VARCHAR(1),
"DECLINEFLAG" VARCHAR(1),
"ENDCASEFLAG" VARCHAR(1),
"ENDCASEDATE" DATE,
"MNGCOM" VARCHAR(10) NOT NULL,
"OPERATOR" VARCHAR(10) NOT NULL,
"MAKEDATE" DATE NOT NULL,
"MAKETIME" VARCHAR(8) NOT NULL,
"MODIFYDATE" DATE NOT NULL,
"MODIFYTIME" VARCHAR(8) NOT NULL,
"BANKCODE" VARCHAR(10),
"BANKACCNO" VARCHAR(40),
"ACCNAME" VARCHAR(120),
"CASEGETMODE" VARCHAR(2),
"ACCMODIFYREASON" VARCHAR(400),
"CASENODATE" DATE,
"CASEPROP" CHARACTER(2),
"REMARK" VARCHAR(2000),
"CANCLEREASON" CHARACTER(2),
"CANCLEREMARK" VARCHAR(500),
"CANCLER" CHARACTER(10),
"CANCLEDATE" DATE,
"RIGISTER" CHARACTER(10),
"CLAIMER" CHARACTER(10),
"UWER" CHARACTER(10),
"UWDATE" DATE,
"SIGNER" CHARACTER(10),
"SIGNERDATE" DATE,
"RISKCODE" VARCHAR(10),
"OTHERIDTYPE" VARCHAR(2),
"OTHERIDNO" VARCHAR(50),
"GRPNO" VARCHAR(20),
"GRPNAME" VARCHAR(150),
"CONTDEALFLAG" VARCHAR(1),
"MOBILEPHONE" VARCHAR(15),
"PREPAIDFLAG" VARCHAR(1),
PRIMARY KEY("CASENO")
); -- End of generated script for 10.136.1.5-DB2-LIS (db2inst1)

对应python语句:

 import json

 def cleanSql(lines):
list=[]
str =''
table_name=''
primary_key=''
for line in lines:
if 'CREATE TABLE' in line:
table_name=line[line.find('."')+1:line.rfind('"')]
if 'PRIMARY KEY' in line:
primary_key=line[line.find('"')+1:line.rfind('"')]
str += line
str = str.lower()
if str.startswith('create table') is False:
str =str[str.index('create table'):len(str)]
if 'primary key' in str:
str=str[0:str.find('primary key')]
if 'foreign key' in str:
str=str[0:str.find('foreign key')]
str= str[str.index('(')+1:]
if 'not null' in str:
str=str.replace('not null','')
list.append(table_name)
list.append(primary_key.lower())
list.append(str)
return list def changeType(type):
stype=type
if 'character' in type:
stype ='string'
if 'date' in type:
stype= 'string'
if 'decimal' in type:
stype= 'string'
return stype def get_json(list):
primary_key=list[1]
str =list[2]
lines= str.splitlines(False)
json_list=[]
for line in lines:
json_dict={}
name=line[line.find('"')+1:line.rfind('"')].strip()
type=line[line.rfind('"')+1:line.find(',')].strip()
type =changeType(type)
json_dict['type']=type
json_dict['name']=name
if primary_key==name:
json_dict['primary']=1
if len(name)==0:
continue
json_list.append(json_dict)
return json_list def load():
schema=open('C:/Users/Administrator.PC--20150529IGF/Desktop/data/data/lis/llcase/full/20170401_09_37_01/schema.sql')
sqlStr =schema.readlines(100000)
list=cleanSql(sqlStr) jsonStr =get_json(list)
jsonS =json.dumps(jsonStr)
print(jsonS)
load()

python:sql建表语句转换为json的更多相关文章

  1. 借助python工具从word文件中抽取相关表的定义,最后组装建表语句-非常好

    借助python工具从word文件中抽取表的定义,最后组装建表语句-非常好 --如有转载请以超链接的方式注明原文章出处,谢谢大家.请尊重每一位乐于分享的原创者 1.python脚本 ## -*- co ...

  2. Python导出MySQL数据库中表的建表语句到文件

    为了做数据对象的版本控制,需要将MySQL数据库中的表结构导出成文件进行版本化管理,试写了一下,可以完整导出数据库中的表结构信息 # -*- coding: utf-8 -*- import os i ...

  3. MySQL建表语句生成Golang代码

    1. 背景 对于后台开发新的需求时,一般会先进行各种表的设计,写各个表的建表语句 然后根据建立的表,写对应的model代码.基础的增删改查代码(基础的增删改查服务可以划入DAO(Data Access ...

  4. 三种常用的MySQL建表语句(转)

    MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1(    ...

  5. powerDesigner的建表语句默认设置为去掉双引号

    powerDesigner的建表语句默认设置为去掉双引号,依次执行如下操作: Database ------>> Edit Current DBMS ------>> Scri ...

  6. mysql和oracle建表语句以及数据类型的区别

    1.mysql和oracle建表语句的区别 mysql DROP TABLE IF EXISTS `order`;CREATE TABLE `order` (  `id` int(11) NOT NU ...

  7. sqlite建表语句(特别是外键问题)

    原创  sqlite建表语句(特别是外键问题) 下面图表示两个表关系: //表1User_invitecreate table User_invite(Invite_id INTEGER PRIMAR ...

  8. ORACLE 建表语句(表名及字段名大写)

    ORACLE建表时如果表名或者字段名存在大小写同时存在的情况下,默认为区分大小写,此时在select/updata等操作时需要在表名或者字段名上添加双引号,否则会报"视图不存在"的 ...

  9. sqlserver 建表语句,获取建表语句的存储过程,包括排序规则,索引,字段说明,支持同时生成多个表

    先创建一个分割表名的分割函数 --表值函数用以截取字符串 --如果为其添加一列主键id,则其顺序就会固定了 create FUNCTION [Split](@text NVARCHAR(max)) ) ...

随机推荐

  1. jquery对象与DOM对象的转化(简化版):

    1:DOM对象 var apple = document.getElementById('apple'); 2:jquery对象 var _apple = $('#apple'); 3:DOM对象=& ...

  2. 从Hive1.0升级到Hive2.0(删除hive1.x中的元数据, 并不是数据迁移)

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  3. 阶乘问题-----sum随变量改变而改变

  4. Arduino DS18B20温度检测

    一.实物图 注:电阻选取4.7k欧 二.事例代码 注:先下载Onewire库到arduino libraries目录下,然后就有例子 #include <OneWire.h> // One ...

  5. shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作

    mysql  -hhostname -Pport -uusername -ppassword  -e  相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作m ...

  6. BZOJ 1146: [CTSC2008]网络管理Network 带修改主席树_树套树_DFS序

    Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路 ...

  7. 【转载】关于DBUtils中QueryRunner的一些解读

    前面已经有文章说了DBUtils的一些特性, 这里再来详细说下QueryRunner的一些内部实现, 写的有错误的地方还恳请大家指出. QueryRunner类 QueryRunner中提供对sql语 ...

  8. git 还原到某次commit

    不可逆提交 一,reset 1.git log查看提交记录 git log 2.选择某次提交的commit ID,ctrl+c复制提交ID 3.使用git reset –hard 还原到某一次提交 g ...

  9. Pytorch基础(5)——批数据训练

    一.知识点: 相关包:torch.utils.data import torch import torch.utils.data as Data 包装数据类:TensorDataset [包装数据和目 ...

  10. Ajax传递的参数如何在浏览器中查看

    如图当需要在浏览器中知道Ajax传递的参数可以,点击浏览器的右键检查,点击XHR,此时要记得提交带有参数的Ajax页面, 这样才可以显示出来传递的参数