python 批量excel导入到mysql中
场景:文件夹下有N多excel,每个excel中有1个sheet,sheet页中首行为表格的列头名
实现:将以上所有表格导入到mysql中去,以文件名命名为表名,以列头名命名为字段名
细节:将所有字段处理成字符串,其中半角"处理成了全角” 等
不足:……
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlrd
import string
import os
import MySQLdbimport sys
reload(sys)
sys.setdefaultencoding("utf-8")def IsSubString(SubStrList,Str): ''''' #判断字符串Str是否包含序列SubStrList中的每一个子字符串 #>>>SubStrList=['F','EMS','txt'] #>>>Str='F06925EMS91.txt' #>>>IsSubString(SubStrList,Str)#return True (or False) ''' flag=True for substr in SubStrList: if not(substr in Str): flag=False return flag def fn_get_filelist(FindPath,FlagStr=[]): ''''' #获取目录中指定的文件名 #>>>FlagStr=['F','EMS','txt'] #要求文件名称中包含这些字符 #>>>FileList=GetFileList(FindPath,FlagStr) # ''' import os FileList=[] FileNames=os.listdir(FindPath) if (len(FileNames)>0): for fn in FileNames: if (len(FlagStr)>0): #返回指定类型的文件名 if (IsSubString(FlagStr,fn)): fullfilename=os.path.join(FindPath,fn) FileList.append(fullfilename) else: #默认直接返回所有文件名 fullfilename=os.path.join(FindPath,fn) FileList.append(fullfilename) #对文件名排序 if (len(FileList)>0): FileList.sort() for i in range(len(FileList)):print FileList[i]return FileList def fn_create(f):book = xlrd.open_workbook(f)sheet = book.sheet_by_index(0)rows = sheet.nrowscols = sheet.ncolsc = ""for ic in range(cols):arr_v = sheet.col_values(ic)h = fn_arr_maxLen(arr_v)c = c + '`' + sheet.cell(0,ic).value + '` varchar(' + str(h) + ') null comment \"' + sheet.cell(0,ic).value + "\"," + "\n\r"t = unicode(f.split("/")[-1].split(".")[0],"utf-8")# f.replace('/tmp/excel/','')t1 = ' create table if not exists `suyang_'t2 = ' id int AUTO_INCREMENT ,primary key (id)) ENGINE=INNODB DEFAULT CHARSET=utf8;'t = t1 + t + '` (' + c + t2#print treturn tdef fn_insert(f):book = xlrd.open_workbook(f)sheet = book.sheet_by_index(0)rows = sheet.nrowscols = sheet.ncolsc = ''for ic in range(cols):c = c + '`' + sheet.cell(0,ic).value + '`,' t = f.split("/")[-1].split(".")[0] # f.replace('/tmp/excel/','')print tinsertSql = ' insert into `suyang_' + t + '` (' + c.rstrip(',') + ' ) values ( 'for ir in range(1,rows):row_values = ''insertSql = ' insert into `suyang_' + t + '` (' + c.rstrip(',') + ' ) values ( 'for icc in range(cols):if isinstance(sheet.cell(ir,icc).value,int) or isinstance(sheet.cell(ir,icc).value,float):vs = repr(sheet.cell(ir,icc).value).split(".")[0]else:vs = str(sheet.cell(ir,icc).value)insertSql = insertSql + row_values + '"' + str(vs).replace('"','”') + '",'insertSql = insertSql.rstrip(',')+');' #sheet.cell(ir,icc)yield insertSql #print tdef fn_arr_maxLen(arr):o = 0 for v in arr:if (o < len(str(v).strip())):o = len(str(v).strip())return oif __name__ == '__main__': '''''cs=fn_create('/tmp/excel/注销信息.xlsx')print cs'''mycn = MySQLdb.connect("10.18.141.52","dba","xxxxxxxxxxxxxxxx","ys" )mycn.set_character_set('utf8')mycursor = mycn.cursor()mycursor.execute('SET CHARACTER SET utf8;')mycursor.execute('SET NAMES utf8;')mycursor.execute('SET character_set_connection=utf8;')fs=fn_get_filelist("/tmp/excel",['xlsx'])for ii in range(len(fs)):tcreateSql = fn_create(fs[ii])print tcreateSqltry:mycursor.execute(tcreateSql)for isql in fn_insert(fs[ii]):#print isqlmycursor.execute(isql)mycn.commit()except Exception , e:print emycursor.close()mycn.close()
引自:https://blog.csdn.net/c_enhui/article/details/60141192
python 批量excel导入到mysql中相关推荐
- 把EXCEL表格导入到MYSQL中_将EXCEL表格中的数据导入mysql数据库表中(两种方法)...
今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命上网查阅方法,发现以下两种方法比较可行: 在此之前先说说按照网上的说法我没有试验成功的方法,将excel文件xls保 ...
- 使用PhpSpreadsheet将Excel导入到MySQL数据库
使用PhpSpreadsheet将Excel导入到MySQL数据库 日常开发中,我们经常遇到这样的场景,需要将一个Excel表格数据如客户信息.学生成绩表导入到系统数据库中,然后在系统中进行进一步操作 ...
- 将 Microsoft Excel 导入至 MySQL
将 Microsoft Excel 导入至 MySQL 一.前言 我得到了一份 Microsoft Excel 表格,里面记录了数据信息需要导入至 SQL 数据库. 如果只是导入数据,当然用 MSSQ ...
- import excel to mysql_将 Microsoft Excel 导入至 MySQL
将 Microsoft Excel 导入至 MySQL 一.前言 我得到了一份 Microsoft Excel 表格,里面记录了数据信息需要导入至 SQL 数据库. 如果只是导入数据,当然用 MSSQ ...
- Python基础 - Excel导入导出
Python基础 - Excel导入导出 Excel文件是Microsoft Excel用来存储电子表格的文件格式,对Excel的处理方式与带分隔符的文件非常相似.由于Excel可以读写csv文件 ...
- mysql access 2017_如何把Access的数据导入到Mysql中
在建设网站的过程中,经常要处理一些数据的导入及导出.在Mysql数据库中,一般有两种方法来处理数据的导出: 1. 使用select * from table_name into outfile &qu ...
- python读取excel送到网页_python怎么读取excel!怎么用python将excel数据写入网页中
怎么用python将excel数据写入网页中 # 装 xlrd-0.9.2 xlutils-1.7.1 这两个模 from xlwt import Workbook, Formula import x ...
- sql2000导出mysql_如何将sql2000的数据库导入到mysql中?
展开全部 先用SQl2000导出e68a843231313335323631343130323136353331333262373366文本文件,把后缀名改为CSv,再从Mysql中一导入OK 参考: ...
- mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
最新文章
- 让seo效果起死回生的妙招
- 我的AutoHotkey配置
- python爬取新浪新闻首页_学习了《python网络爬虫实战》第一个爬虫,爬取新浪新闻...
- 阿里云重磅发布RDS for SQL Server AlwaysOn集群版
- 基于Java的数据采集(终结篇)
- java实例分析宠物商店_java实例分析:宠物商店.ppt
- linux系统在windows看不到,Linux下怎么看不到盘符啊?
- 缓存DNS服务器和主从DNS服务器的快速搭建详解——续
- rmvb 转 avi 方法
- PyQt5 打造GUI爬虫 小说下载器
- 访存模式分析实验思路(毕设笔记9)
- on duplicate key update不生效_万粉盛典amp;六周年庆|双十一提前嗨!惠玩惠购不做尾款人!...
- 视觉感知在数据可视化中的作用
- 垃圾邮件识别-朴素贝叶斯算法
- 时间序列预测的评估指标补遗
- Vue中引入字体并解决字体文件过大问题
- 深圳软件测试培训:事件与事件处理
- 2023美国大学生数学建模竞赛中文题目发布
- java毕设项目进出货管理系统(附源码)
- 如何在win7下装win8以及我的win8之旅