根据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 建表语句相关推荐

  1. Excel自动生成sql建表语句

    ETL开发中重新整理很多表结构,写建表语句又是一件头疼的事情,干脆借鉴网友的代码,自己写了一个自动生成建表sql的模板. 模板下载:http://download.csdn.net/detail/en ...

  2. PowerDesigner生成数据库建表sql脚本

    PowerDesigner生成数据库建表sql脚本 一.生成sql server 2000或oracle建表sql脚本 1.新建一个物理模型,通过database菜单下的change current ...

  3. tp5循环查询语句_如何用Excel快速生成SQL语句,用过的人都说好

    Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 导入Excel数据 Excel的数据有多种方式,这 ...

  4. excel数据生成sql insert语句

    excel数据生成sql insert语句 excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用ex ...

  5. 如何用Excel快速生成SQL语句,用过的人都说好

    导读:Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 作者:丶平凡世界 来源:SQL数据库开发(I ...

  6. 使用Excel批量生成SQL语句,用过的人都说好

    点击关注公众号,SQL干货及时获取 后台回复:1024,获取海量学习资源 Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能 ...

  7. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  8. PowerDesigner创建概念模型转换为物理模型使表生成sql

    创建表 打开PowerDesigner 新建概念模型(Conceptual Data Model) 找到工作空间–>右键找到新建–>找到Conceptual Data Model 点击 修 ...

  9. 如何使用excel批量生成sql语句

    使用excel批量生成sql语句 1.将sql数据导出到excel文件 2.去除execl中多余的空格 设置单元格格式(如果不定义数据格式,去除数据前的空格后数据前的00会消失,如"001& ...

  10. excel动态生成Sql语句

    文章目录 0. 前言 1. 先说结论 2. 例子 0. 前言 由于工作原因,无意中发现有时候有些数据来由形式是excel文件,需要把里面的值变成sql语句,然后去数据库中执行. 因此记录下如何让exc ...

最新文章

  1. 吴恩达说“将引领下一波机器学习技术”的迁移学习到底好在哪?
  2. 【每日一算法】最后一个单词的长度
  3. 关于 PHP 与 MYSQL的链接
  4. linux(ubuntu)~终端(terminal)shell操作指令
  5. 局部特征(3)——SURF特征总结
  6. mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)
  7. 计算机语言up,TweakBit PCSpeedUp
  8. 小心pthread_cond_signal和SetEvent之间的差异
  9. Android笔记-ERROR: Invalid revision: 3.17.20200511-g8787079
  10. 怎么自己打印餐饮小票_自己怎么做餐饮外卖配送系统?可以开发外卖配送系统的公司有哪些?...
  11. 将 30 万行代码从 Flow 迁移到 TypeScript 是一种怎样的体验?
  12. 快速构建Windows 8风格应用9-竖直视图
  13. win32com在wps上另存为SaveAs报错
  14. PAT题目答案与经验总结1(持续更新,大家放心关注)
  15. Element is missing end tag
  16. 分数四则运算 python
  17. 曲速未来|区块链可扩展性:第一层解决方案是否保持密钥?
  18. HTML视频学习教程,让你实战入门前端
  19. VC++常用功能开发汇总
  20. 10月书讯(下)| 双节同庆,读书正当时

热门文章

  1. 谷歌地图的级别与对应比例尺及分辨率探究
  2. 资源 | 最新版区块链术语表(中英文对照)
  3. 使用C语言创建顺序表
  4. 使用Javassist 动态生成类
  5. Linux下合成pdf
  6. Java8新特性之Lambda表达式
  7. html ui在线生成器,漂亮的CSS按钮样式集以及在线生成工具
  8. css修改单选按钮样式
  9. Pyhton词云示例(移植-情人节专用版)
  10. Materials Studio多层聚合物的构建及data文件导出