Python 生成MYSQL inser语句
背景:
一般来说,navicat生成的insert已经够用了
如果说一张表有2,30个字段,每个字段还得一一对上,其实是很难的。所以抽空写了个小程序。用它完全不用担心字段对不上了。因为没有时间,需要手动和程序一起执行,但平时用用也是够了,,如果会改的话,可以自己修改。大概思路就这样:先去information_schema库里把字段和说明取出来,再拼接成insert
环境是python2.7
filename ='user_base_info' file = open('c:\\table\\new\\'+filename+'.txt', 'r') #sql文件地方 sql_filds='' sql_values='' while 1: line = file.readline() arr = line.replace("\n", "").split('$') # if len(arr) ==4: sql_filds+=arr[0]+',' sql_values+='\'\',/*'+arr[1].replace(";","")+'_'+arr[2]+'_'+arr[3]+'_'+arr[0]+'*/\n' if not line: break pass sql_filds =sql_filds[:-1] sql_values=sql_values[:-1] #sql_values=sql_filds[0:len(sql_values)-1]; # print sql_filds #print sql_values sql='insert into '+filename+'('+sql_filds+')\n values \n('+sql_values+');' print sql
怎么使用:
1、先执行sql 查询出表里的字段和对应的说明。在mysql中,每个数据库都对应有一个对应架构的数据库information_schema,这个库可以查出表的所有字段和说明。
SELECT COLUMN_NAME,COLUMN_COMMENT,COLUMN_TYPE,IS_NULLABLE FROM `COLUMNS` t where t.TABLE_NAME ='t_user_base_info' and t.TABLE_SCHEMA='gamemall_ucenter';
2、导出,将上面的数据导出为以下这种格式,并保存在一个地方
导出后,文件格式为:
uid$用户ID$bigint(20)$NO account$喵号$bigint(20)$NO avatar$头像路径$varchar(256)$YES user_name$用户昵称$varchar(30)$NO gender$性别(0-男,1-女)$smallint(1)$YES birthdate$出生日期$date$YES user_status$用户状态(0-正常,1-冻结)$smallint(1)$NO first_zm$首字母$varchar(1)$YES sign_name$用户签名$varchar(100)$YES area$用户所在地区$varchar(20)$YES user_register_chl$用户所属渠道号$varchar(50)$YES has_identified$1、是,2、否$smallint(6)$YES ctime$创建时间$int(11)$NO utime$更新时间$int(11)$NO
3、修改代码
filename ='user_base_info' file = open('c:\\table\\coupon\\'+filename+'.txt', 'r') // sql文件地方
4、执行结果,注意后面多了一个逗号,需要手动去掉。这样就可以一个一个字段对起来啦
insert into user_base_info(uid,account,avatar,user_name,gender,birthdate,user_status,first_zm,sign_name,area,user_register_chl,has_identified,ctime,utime) values ('',/*用户ID_bigint(20)_NO_uid*/ '',/*喵号_bigint(20)_NO_account*/ '',/*头像路径_varchar(256)_YES_avatar*/ '',/*用户昵称_varchar(30)_NO_user_name*/ '',/*性别(0-男,1-女)_smallint(1)_YES_gender*/ '',/*出生日期_date_YES_birthdate*/ '',/*用户状态(0-正常,1-冻结)_smallint(1)_NO_user_status*/ '',/*首字母_varchar(1)_YES_first_zm*/ '',/*用户签名_varchar(100)_YES_sign_name*/ '',/*用户所在地区_varchar(20)_YES_area*/ '',/*用户所属渠道号_varchar(50)_YES_user_register_chl*/ '',/*1、是,2、否_smallint(6)_YES_has_identified*/ '',/*创建时间_int(11)_NO_ctime*/ '',/*更新时间_int(11)_NO_utime*/); -- 这里的逗号要去掉 加了红色的背景色那