简单实现根据excel表生成sql 建表语句
根据Excel表数据 生成 sql建表语句
- 实现字符串转成数据库属性名
- 读取Excel数据,生成字符串列表
- 生成数据库建表语句
实现字符串转成数据库属性名
源数据:
jieba 分词
通过结巴分词,对传入的字符串进行处理,分为一个个特定字符用于后续翻译。同时再生成分词后数组时,根据自己的需求对数据进行简单处理。我这里只做了去括号内内容处理。
# jieba分词(现在没有加语义标注,后期可以尝试添加)
def jiebaDeal(str):jieba.load_userdict(file_userdict_url) #导用户自定义词典splitlist=list(jieba.cut(str,cut_all=False))tagnum=0i=0while(i<len(splitlist)): #取出括号内的文字if splitlist[i] =='(':tagnum=1elif splitlist[i]==')':splitlist.pop(i)tagnum=0if tagnum==1:splitlist.pop(i)i=i-1i+=1return splitlist
效果
单词翻译
使用 谷歌 ,对单词进行翻译,刚开始尝试使用谷歌的包进行翻译,但效果不好,就找了一下别人的函数。
参考代码链接:
谷歌翻译
# 谷歌进行单词分词
def googleTranslate(text):url = 'https://translate.google.cn/_/TranslateWebserverUi/data/batchexecute?rpcids=MkEWBc&f.sid=-2984828793698248690&bl=boq_translate-webserver_20201221.17_p0&hl=zh-CN&soc-app=1&soc-platform=1&soc-device=1&_reqid=5445720&rt=c'headers = {'origin': 'https://translate.google.cn','referer': 'https://translate.google.cn/','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36','x-client-data': 'CIW2yQEIpbbJAQjEtskBCKmdygEIrMfKAQj2x8oBCPfHygEItMvKAQihz8oBCNzVygEIi5nLAQjBnMsB','Decoded':'message ClientVariations {repeated int32 variation_id = [3300101, 3300133, 3300164, 3313321, 3318700, 3318774, 3318775, 3319220, 3319713, 3320540, 3329163, 3329601];}','x-same-domain': '1'} data = {'f.req': f'[[["MkEWBc","[[\\"{text}\\",\\"auto\\",\\"en\\",true],[null]]",null,"generic"]]]'} res = requests.post(url, headers=headers, data=data).textpattern = '\)\]\}\'\s*\d{3,4}\s*\[(.*)\s*' part1 = re.findall(pattern, res)part1_list = json.loads('['+part1[0])[0]if part1_list[2] is None: return textcontent1 = part1_list[2].replace('\n', '')part2_list = json.loads(content1)[1][0][0][5:][0]s = ''for i in part2_list: s += i[0]return s
结果:
对词进行转化与处理
# 词处理
def enDeal(str):name=''for sinstr in str.split():if sinstr in nosenseWord or sinstr in nosenseBigword:continueelif name=='':name=name+sinstrelse:name=name+'_'+sinstrreturn name.lower()def enchange(str):name=''if(dictionary.get(str)==None):tempstr=googleTranslate(str)name=enDeal(tempstr)dictionary[str]=nameelse:name=dictionary.get(str)return name
词转属性名
# 单个词转化成属性名
def wordtoname(str):tempStr=''for trans in jiebaDeal(str):tempStr=tempStr+' '+enchange(trans)return enDeal(tempStr)# 列表转化成 属性名
def exceltocol(excelList):# 分词后返回的二维数组namelist=[] for str in excelList: namelist.append(wordtoname(str))print(namelist)return namelist
读取Excel数据,生成字符串列表
#获取表的数据,并转化为建库所需数组
#所需参数:[table_page_num: 需要读取的sheet编号 ,start_col:用于数据生成的起始列 ,end_col:用于数据生成的起始列 ,
# nameRow:用来生成属性名的行,dataRow:用来生成数据类型的行]
def get_table_data(table_page_num,start_col,end_col,nameRow,dataRow): sheet=ef.sheet_by_index(table_page_num) #获取第table_page_num 页 也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')sql_data_type=[] #数据类型sql_col_name=[] #列名mysqlType=['varchar','varchar','decimal','date','boolean','varchar']#把表格内的数据转化成,符合规范的变量名sql_col_name=wordTrans.exceltocol(sheet.row_values(nameRow,start_col,end_col)) for i in range(start_col,end_col): #根据表格内的数据,获取变量类型temp_type_num=sheet.cell(dataRow,i).ctype sql_data_type.append(mysqlType[temp_type_num])return [sql_col_name,sql_data_type]
生成数据库建表语句
# 表中字段生成语句
def fieldstatement(col_name,sql_Type):#根据列数据类型写入sql insert语句if sql_Type=="varchar":inser_param="`{0}` {1}(255) NULL ".format(col_name,sql_Type) elif sql_Type=="decimal":inser_param="`{0}` {1}(10,2) NULL ".format(col_name,sql_Type)else:inser_param="`{0}` {1}".format(col_name,sql_Type)return inser_paramdef create_table_statement(table_page_num,name_list,type_list):#创建sql语句createTableSql="CREATE TABLE {tableName}( \n".format(tableName=wordTrans.wordtoname(ef.sheet_names()[table_page_num]))for i in range(len(type_list)):#拼接建库语句inser_param=fieldstatement(name_list[i],type_list[i])if (i!=len(name_list)-1):inser_param+=','createTableSql=createTableSql+inser_paramcreateTableSql+=')'return createTableSql
最终结果:
放在mysql 数据库中可运行
完整代码
简单实现根据excel表生成sql 建表语句相关推荐
- Excel自动生成sql建表语句
ETL开发中重新整理很多表结构,写建表语句又是一件头疼的事情,干脆借鉴网友的代码,自己写了一个自动生成建表sql的模板. 模板下载:http://download.csdn.net/detail/en ...
- PowerDesigner生成数据库建表sql脚本
PowerDesigner生成数据库建表sql脚本 一.生成sql server 2000或oracle建表sql脚本 1.新建一个物理模型,通过database菜单下的change current ...
- tp5循环查询语句_如何用Excel快速生成SQL语句,用过的人都说好
Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 导入Excel数据 Excel的数据有多种方式,这 ...
- excel数据生成sql insert语句
excel数据生成sql insert语句 excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用ex ...
- 如何用Excel快速生成SQL语句,用过的人都说好
导读:Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 作者:丶平凡世界 来源:SQL数据库开发(I ...
- 使用Excel批量生成SQL语句,用过的人都说好
点击关注公众号,SQL干货及时获取 后台回复:1024,获取海量学习资源 Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能 ...
- python生成表格文件_python 读取excel文件生成sql文件实例详解
python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...
- PowerDesigner创建概念模型转换为物理模型使表生成sql
创建表 打开PowerDesigner 新建概念模型(Conceptual Data Model) 找到工作空间–>右键找到新建–>找到Conceptual Data Model 点击 修 ...
- 如何使用excel批量生成sql语句
使用excel批量生成sql语句 1.将sql数据导出到excel文件 2.去除execl中多余的空格 设置单元格格式(如果不定义数据格式,去除数据前的空格后数据前的00会消失,如"001& ...
- excel动态生成Sql语句
文章目录 0. 前言 1. 先说结论 2. 例子 0. 前言 由于工作原因,无意中发现有时候有些数据来由形式是excel文件,需要把里面的值变成sql语句,然后去数据库中执行. 因此记录下如何让exc ...
最新文章
- 吴恩达说“将引领下一波机器学习技术”的迁移学习到底好在哪?
- 【每日一算法】最后一个单词的长度
- 关于 PHP 与 MYSQL的链接
- linux(ubuntu)~终端(terminal)shell操作指令
- 局部特征(3)——SURF特征总结
- mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)
- 计算机语言up,TweakBit PCSpeedUp
- 小心pthread_cond_signal和SetEvent之间的差异
- Android笔记-ERROR: Invalid revision: 3.17.20200511-g8787079
- 怎么自己打印餐饮小票_自己怎么做餐饮外卖配送系统?可以开发外卖配送系统的公司有哪些?...
- 将 30 万行代码从 Flow 迁移到 TypeScript 是一种怎样的体验?
- 快速构建Windows 8风格应用9-竖直视图
- win32com在wps上另存为SaveAs报错
- PAT题目答案与经验总结1(持续更新,大家放心关注)
- Element is missing end tag
- 分数四则运算 python
- 曲速未来|区块链可扩展性:第一层解决方案是否保持密钥?
- HTML视频学习教程,让你实战入门前端
- VC++常用功能开发汇总
- 10月书讯(下)| 双节同庆,读书正当时