因为工作上临时有个需求,需要将excel文件转为csv并入MySQL。于是写了一个这么一个小程序。在转csv的时候打开csv文件,好多较长的数字自动转换为了科学计数法,后来把列格式转换为文本,再次打开还是科学计数法,我相信好多人都对这个问题很头疼。不过我发现虽然打开是科学计数法但是转完csv之后用python直接读,读到的是完整的数据,数据不是科学计数法,后几位也不是0。以下是代码部分,这个代码支持所有表的数据写入,只需要在csv的第一列写上对应的库中表的字段名。
代码:
# _*_ coding:utf-8 _*_
import sys
import csv
import sys
import csv
def ExecuteSql(tablename,fieldname,list_date=[]):
"将excel中数据写入数据库"
db = pymysql.connect(host="150.3.3.3", port=3317,user="luwenjie8061",
passwd="Passw0rd_luwenjie646", db="SENSHG1")
cursor = db.cursor()
date = ""
#将csv文件中的数据拼接成insertSQL中的格式
for num in range(0,len(list_date)):
date = date + "'" + str(list_date[num]) + "'" + ","
date = date[0:len(date) - 1]
sql = "insert into " + tablename + " (" + fieldname + ") " + \
"values " + \
" (" + \
date.strip() + ")"
# 使用 cursor() 方法创建一个游标对象 cursor
cursor.execute(sql)
"将excel中数据写入数据库"
db = pymysql.connect(host="150.3.3.3", port=3317,user="luwenjie8061",
passwd="Passw0rd_luwenjie646", db="SENSHG1")
cursor = db.cursor()
date = ""
#将csv文件中的数据拼接成insertSQL中的格式
for num in range(0,len(list_date)):
date = date + "'" + str(list_date[num]) + "'" + ","
date = date[0:len(date) - 1]
sql = "insert into " + tablename + " (" + fieldname + ") " + \
"values " + \
" (" + \
date.strip() + ")"
# 使用 cursor() 方法创建一个游标对象 cursor
cursor.execute(sql)
db.commit() #注意:一定要提交才会写入数据库,写入数据时不会自动提交
db.close()
db.close()
def read_CSV(path):
fieldname = ""
readeritem.extend([row for row in csv_files])
#拼接出insertSQL中的字段名
for num in range(0, len(readeritem[0])):
fieldname = fieldname + readeritem[0][num] + ","
fieldname = fieldname[0:len(fieldname) - 1]
#获取csv文件中每行数据,并写入数据库
for lines in range(1, len(readeritem)):
list_date = readeritem[lines]
ExecuteSql(tablename,fieldname,list_date)
readeritem.extend([row for row in csv_files])
#拼接出insertSQL中的字段名
for num in range(0, len(readeritem[0])):
fieldname = fieldname + readeritem[0][num] + ","
fieldname = fieldname[0:len(fieldname) - 1]
#获取csv文件中每行数据,并写入数据库
for lines in range(1, len(readeritem)):
list_date = readeritem[lines]
ExecuteSql(tablename,fieldname,list_date)
#参数读取,即执行该python文件时,第一个参数是要写入的表名,第二个参数是excel文件名
tablename = sys.argv[1]
file = sys.argv[2]
tablename = sys.argv[1]
file = sys.argv[2]
#file = r'C:\Users\卢文杰\Desktop\卢文杰\工作文件\TEST\各区报警点反馈信息汇总_V0.3.xlsx'
read_CSV(file)