图形格式化SQL
2023-04-10 本文已影响0人
平凡的运维之路
图形格式化SQL
使用tkinter图形化窗口
- 由于工作中经常需要把大量数据转换sql进行导入,由于数据量大一条一条导入,耗时慢,为了加快导入时间,特意编写该图形格式化SQL小工具
详细代码
- 代码详情
from tkinter import *
from tkinter import messagebox
from tkinter import Menu
import time,os
#主窗口
root=Tk()
root.title("批量TXT格式SQL文件")
root.geometry("600x450")
root.resizable(False, False)
frame1=Frame(root)
frame2=Frame(root)
frame3=Frame(root)
frame1.pack()
#构建
lab=Label(frame1,text="输入你需要格式化的文件完整路径:",font=("楷体",14),fg="teal").pack()
txt=StringVar()
entry=Entry(frame1,textvariable=txt,font=("楷体",14)).pack()
lab=Label(frame1,text="输入格式化SQL字段:表名与字段名之间用||分割",font=("楷体",14),fg="teal").pack()
sqltxt=StringVar()
entry=Entry(frame1,textvariable=sqltxt,font=("楷体",14)).pack()
lab=Label(frame1,text="点击生成SQL --> 确定 --> 菜单工具 --> 保存",font=("楷体",14),fg="teal").pack()
lab=Label(frame1,text="注意:导入文件使用逗号分割,编写路径和字段时注意换行符",font=("楷体",14),fg="teal").pack()
#输出文本按钮函数
def func1():
global data,path,sql_ziduan
path=txt.get()
# path = "c:\\Users\\WIN10\\Desktop\\1.txt"
sql_ziduan=sqltxt.get()
# sql_ziduan = "mysqltablename||source,session_id,local_url,remote_url,call_time,call_result"
print(path, "=====>",sql_ziduan)
# with open(path,"r",encoding="utf-8") as fo:
# data=fo.read()
# print(data)
# data=str(data)
# text3.insert(INSERT,data)
messagebox.showinfo(title="输出成功",message="确定")
time.sleep(1)
frame1.pack_forget()
frame2.pack()
button=Button(frame1,text="生成SQL",font=("楷体",14),fg="teal",command=func1).pack()
#菜单
#刷新函数
def fun1():
text3.delete(0.0,END)
num=1
def fun2():
global num
tablename = sql_ziduan.split("||")[0]
field = sql_ziduan.split("||")[1]
fomat_SQL = "insert into "+ tablename + "(" + field + ") values "
sql_parameter_list = []
num+=1
new_file_path = os.path.dirname(os.path.realpath(path))
st=new_file_path + "\\"+"Insert.sql"
fp=open(st,"w",encoding="utf-8")
print("<====>")
with open(path,"r",encoding="utf-8") as fo:
data=fo.readlines()
for line in data:
txt = line.strip().replace('"','')
txt_list = txt.split(",")
parameter = tuple(txt_list)
sql_parameter_list.append(parameter)
if len(sql_parameter_list) == 2000:
values_sql = str(sql_parameter_list).replace("[", "").replace("]", "")
Newsql = fomat_SQL + values_sql + ";"
# print(Newsql)
fp.writelines(Newsql + "\n")
sql_parameter_list = []
sql_parameter_list.append(parameter)
values_sql = str(sql_parameter_list).replace("[", "").replace("]", "")
# print(values_sql,"=========>")
Newsql = fomat_SQL + values_sql + ";"
# print(Newsql)
fp.writelines(Newsql + "\n")
fp.close()
st2="已保存在"+st+"文件"
messagebox.showinfo(title="保存成功",message=st2)
menubar = Menu(root)
file = Menu(menubar, tearoff=0)
file.add_command(label='刷新', command=fun1)
file.add_command(label='保存', command=fun2)
menubar.add_cascade(label='菜单工具', menu=file)
root.config(menu=menubar)
#窗口2
# text3=Text(frame2,height = 0,width = 0,font=("楷体",14),fg="black")
# text3.pack()
def func2():
frame2.pack_forget()
frame1.pack()
button=Button(frame2,text="返回",font=("楷体",14),fg="teal",command=func2).pack()
root.mainloop()
运行注意事项
- 填写txt文件路径时注意换行符
- 填写表名与字段使用||进行分割
具体操作
-
下载
http://10.130.36.117/Deploymentpackage/txt转换sql.exe
![](https://img.haomeiwen.com/i10506346/17586e945000978e.png)
-
首先填写 完整txt文件路径
-
填写表名与字段
image.png
-
点击生成SQL --> 确定 --> 菜单工具 --> 保存
image.png
![](https://img.haomeiwen.com/i10506346/ff60409c1d849960.png)
![](https://img.haomeiwen.com/i10506346/f08f5f89c57d5811.png)
- 在txt文件路径同级目录下有Insert.sql文件