大学学习MySQL的时候,老师经常发一些Excel文档或者照着书上的表格,让我们插入到数据库中去,录入这些数据非常消耗时间,所以闲来没事我就用Python写了一个读取文档自动转成SQL insert插入语句的小程序,可以直接复制老师发的Excel表格是数据或者手机拍照转表格的数据到项目文件下的Excel.txt文件中去,改好参数运行程序就可以自动转换成insert语句输出到Insert SQL.txt文件中去,我知道可以用pandas,xlrd或者openpyxl直接读取excel文件会更方便,但是现在忙起来了,没时间再修改了,希望各位大佬见谅,各位小伙伴可以在此代码基础上继续修改,升级这个代码,可以加入更方便的读取和生成的等等功能。
演示视频链接如下:
Excel数据转MySQL插入语句的Python程序
源码项目文件下载如下:
代码如下:
# TODO 自动将Excel数据转换为MySQL插入语句
import re
# 运行时请先修改这两个值
数据表属性个数 = 8
数据库表名称 = "XS"
# 将data转换为一个元素一行的形式
infopen = open("Excel.txt", 'r', encoding="utf-8")
outfopen = open("String.txt", 'w+', encoding="utf-8")
db = infopen.read()
outfopen.write(db.replace('\t', '\n'))
infopen.close()
outfopen.close()
# 读取转换后的data,即data1,将图片识别错误的其他无关符号去除
f = open("string.txt", "r", encoding='UTF-8')
data = f.read().replace(" ", "\n")
data = re.sub(r"[(){}[\].|\\/]", "", data).splitlines()
f.close()
# print(data)
# 将每个元素加上单引号 ''
num = int(0)
for i in data:
num = num + 1
if num % 数据表属性个数 == 0 and num != 0:
data[num - 1] = "\'" + i + "\'"
else:
data[num - 1] = "\'" + i + "\',"
# print(data)
# 将给元素按表格属性行数分组
num = int(0)
data[0] = "\t(" + data[0]
for i in data:
num = num + 1
if num == (len(data)):
data[num - 1] = i + ")"
elif num % 数据表属性个数 == 0 and num != 0:
data[num - 1] = i + "),\n\t("
# print(data)
# 将转换后的data数据转换成字符串
letter = "".join(data)
# print(letter)
# 将字符串拼接到MySQL插入语句后
letter = "INSERT INTO {} VALUES \n".format(数据库表名称) + letter
SQLopen = open("Insert SQL.txt", 'w+', encoding="UTF-8")
SQLopen.write(letter)
print(letter)
使用说明:
大家使用生成的 insert 插入语句前,需要先创建好数据库和表,执行程序前需要先根据你创建的表修改 数据表属性个数和数据库表的名称 两个参数,再执行程序。
项目中文件如下:
Excel.txt用来存放你从excel表中复制的数据
String.txt存放程序对Excel.txt处理后的字符串数据
Insert SQL.txt存放程序执行完成后生成的SQL Insert语句
main.py为执行程序
此程序大家可以拿去随便修改,添加更方便的方法进去,比如自动读取Excel表格、自动生成创表语句和创数据库语句,或者加一些GUI进去等等,感谢大家的阅读!