使用python将excel数据导入数据库
使用python将excel数据导入数据库
- 因为需要对数据处理,将excel数据导入到数据库,记录一下过程。
- 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt)
- 直接丢代码,使用python3,注释比较清楚。
- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
importxlrdimportpymysql# import importlib# importlib.reload(sys) #出现呢reload错误使用defopen_excel():try:book=xlrd.open_workbook("XX.xlsx")#文件名,把文件与py文件放在同一目录下except:print("open excel file failed!")try:sheet=book.sheet_by_name("sheet名称")#execl里面的worksheet1returnsheetexcept:print("locate worksheet in excel failed!")#连接数据库try:db=pymysql.connect(host="127.0.0.1",user="root",passwd="XXX",db="XXX",charset='utf8')except:print("could not connect to mysql server")defsearch_count():cursor=db.cursor()select="select count(id) from XXXX"#获取表中xxxxx记录数cursor.execute(select)#执行sql语句line_count=cursor.fetchone()print(line_count[0])definsert_deta():sheet=open_excel()cursor=db.cursor()foriinrange(1, sheet.nrows):#第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1name=sheet.cell(i,0).value#取第i行第0列data=sheet.cell(i,1).value#取第i行第1列,下面依次类推print(name)print(data)value=(name,data)print(value)sql="INSERT INTO XXX(name,data)VALUES(%s,%s)"cursor.execute(sql,value)#执行sql语句db.commit()cursor.close()#关闭连接insert_deta()db.close()#关闭数据print("ok ")XXX里自行修改自己的名称。
- 说明:对于不规则的单元格,例如合并过的单元格会取到空值。
- 有机会把数据库写到excel贴上来。
- 优化了一下这个程序
- 123456789101112131415161718192021222324252627282930313233343536373839404142
importpymysqlimportxlrd# 连接数据库try:db=pymysql.connect(host="127.0.0.1", user="root",passwd="XXX",db="XXX",charset='utf8')except:print("could not connect to mysql server")defopen_excel():try:book=xlrd.open_workbook("XXX.xlsx")#文件名,把文件与py文件放在同一目录下except:print("open excel file failed!")try:sheet=book.sheet_by_name("XXX")#execl里面的worksheet1returnsheetexcept:print("locate worksheet in excel failed!")definsert_deta():sheet=open_excel()cursor=db.cursor()row_num=sheet.nrowsforiinrange(1, row_num):# 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1row_data=sheet.row_values(i)value=(row_data[0],row_data[1],row_data[2],row_data[3])print(i)sql="INSERT INTO demo_yangben(xxx,xxxx,xxxx,xxxx)VALUES(%s,%s,%s,%s)"cursor.execute(sql, value)# 执行sql语句db.commit()cursor.close()# 关闭连接open_excel()insert_deta() - 再改一下,每一万条数据写入到数据库一次
- 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
importpymysqlimportxlrdimportsys'''连接数据库args:db_name(数据库名称)returns:db'''defmysql_link(de_name):try:db=pymysql.connect(host="127.0.0.1", user="xxx",passwd="xxx",db=xxx,charset='utf8')returndbexcept:print("could not connect to mysql server")'''读取excel函数args:excel_file(excel文件,目录在py文件同目录)returns:book'''defopen_excel(excel_file):try:book=xlrd.open_workbook(excel_file)# 文件名,把文件与py文件放在同一目录下print(sys.getsizeof(book))returnbookexcept:print("open excel file failed!")'''执行插入操作args:db_name(数据库名称)table_name(表名称)excel_file(excel文件名,把文件与py文件放在同一目录下)'''defstore_to(db_name, table_name, excel_file):db=mysql_link(db_name)# 打开数据库连接cursor=db.cursor()# 使用 cursor() 方法创建一个游标对象 cursorbook=open_excel(excel_file)# 打开excel文件sheets=book.sheet_names()# 获取所有sheet表名forsheetinsheets:sh=book.sheet_by_name(sheet)# 打开每一张表row_num=sh.nrowsprint(row_num)list=[]# 定义列表用来存放数据num=0# 用来控制每次插入的数量foriinrange(1, row_num):# 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1row_data=sh.row_values(i)# 按行获取excel的值value=(row_data[0], row_data[1], row_data[2], row_data[3], row_data[4], row_data[5], \row_data[6], row_data[7], row_data[8], row_data[9], row_data[10], row_data[11], row_data[12],row_data[13], row_data[14])list.append(value)# 将数据暂存在列表num+=1if( num>=10000):# 每一万条数据执行一次插入print(sys.getsizeof(list))sql="INSERT INTO "+table_name+" (time, xingbie, afdd, xzb, yzb, cfbj, jjlbmc, \bjlbmc, bjlxmc, bjlxxlmc, gxqymc,gxdwmc, afql, afxqxx, cjdwmc)\VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"cursor.executemany(sql,list)# 执行sql语句num=0# 计数归零list.clear()# 清空listprint("worksheets: "+sheet+" has been inserted 10000 datas!")print("worksheets: "+sheet+" has been inserted "+str(row_num)+" datas!")db.commit()# 提交cursor.close()# 关闭连接db.close()if__name__=='__main__':store_to('demo','demo_yangben','xxx.xlsx') - 思考,如果数据插入有错误,怎么解决,
- 其实有很多数据库工具可以直接来解决这个问题,注意字符转换的格式就好。
- 批量插入数据请看: https://www.cnblogs.com/longbigbeard/p/9317141.html
使用python将excel数据导入数据库的更多相关文章
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 如何把excel数据导入数据库
这里介绍2种把excel数据导入oracle数据库的方法. 1. 在excel中生成sql语句. 1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- Excel数据导入数据库
maven依赖 <!--excel相关依赖--> <dependency> <groupId>org.apache.poi</groupId> < ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- PHPExcel将Excel数据导入数据库
<?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...
- 利用python将excel数据导入mySQL
主要用到的库有xlrd和pymysql, 注意pymysql不支持python3 篇幅有限,只针对主要操作进行说明 连接数据库 首先pymysql需要连接数据库,我这里连接的是本地数据库(数据库叫ld ...
- 将Excel数据导入数据库
Excel如下,这页工作表名叫“线路” 数据库表如下 using System; using System.Collections.Generic; using System.Linq; using ...
- ASP.NET Excel数据导入数据库
<identity impersonate="true"/> 是指模拟IIS身份验证 導入錯誤時可刪除 protected void btnImport_Click(o ...
随机推荐
- 使用phpmyadmin创建数据库
1,使用phpmyadmin也需要实现安装php环境,安装环境请参考:http://www.sitestar.cn/bbs/thread-164-1-1.html: 2,到phpmyadmin官方网站 ...
- MySql登陆密码忘记了怎么办?MySQL重置root密码方法
本文主要介绍Windows和Linux系统下忘记密码重置root密码的方法,需要的朋友可以参考下. MySQL有时候忘记了root密码是一件伤感的事.这里提供Windows 和 Linux 下的密码重 ...
- newborn, infant, toddler以及baby的区别
1.An infant (from the Latin word infans, meaning "unable to speak" or "speechless&quo ...
- MySQL学习(十三)
编码问题 乱码是如何形成的 1 解码时与实际编码不一致 可修复 2 传输过程中,编码不一致,导致字节丢失,不可修复,如把utf8转为GB2312 连接器的特性:连接客户端和服务器,客户端的字符先发给连 ...
- h5做直播的弹幕效果
最近在搞弹幕效果所以就写一个关于弹幕的吧,刚开始寻思去网上找插件的,但找的插件和我的需求都不太相符,其实做弹幕我知道的有两种方法: 1:一种是用canvas和对象来完成弹幕想过,用canvas来完成弹 ...
- Python全栈开发-Day1-Python基础1
目录 Python介绍 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式f ...
- 动态规划-子数组乘积小于k的总个数 Subarray Product Less Than K
2018-09-01 23:02:46 问题求解: 问题求解: 最开始的时候,一眼看过去就是一条 dp 嘛,保存每个数字结尾的长度和,最后求和就好,至于长度如何求,本题中需要用滑动窗口来维护. 很好的 ...
- (转)C# Stopwatch详解
C# Stopwatch类 命名空间:System.Diagnostics; namespace System.Diagnostics { // 提供一组方法和属性,可用于准确地测量运行时间. pub ...
- Go语言学习之1 基本概念、环境搭建、第一个Go程序
一.环境搭建 见我的这篇博客 https://www.cnblogs.com/xuejiale/p/10258244.html 二.golang语言特性1. 垃圾回收 1) 内存自动回收,再也不 ...
- GRCh38基因组和注释文件探究
ensembl/release91: cat Homo_sapiens.GRCh38.91.gtf | grep -v "#" | cut -f9 | cut -f1,3,6,8 ...