思路:
循环指定目录中的每个.sql文件,读取每行内容,拼接到列表中,按每次1000行执行。
备注:
pymysql在8.0版本以前(不包含8.0)默认可以同时执行多条sql语句的,例如“insert into tb(1);insert into tb(2);”
但是在8.0之后不再为默认,需要手动配置pymysql.connect的参数client_flag=CLIENT.MULTI_STATEMENTS,否则会报错。
import os import pymysql from pymysql.constants import CLIENT # pymysql在8.0版本之后需要手动配置,以支持同时执行多条sql语句 conn = pymysql.connect(host='192.168.1.17', user='root', passwd="password", db='db1', client_flag=CLIENT.MULTI_STATEMENTS) cur = conn.cursor() path = r'D:\Projects\sql' for filename in os.listdir(path): if filename.endswith(".sql") == False: continue count = 0 time = 0 sql = [] filepath = os.path.join(path,filename) with open(filepath, "r", encoding="utf-8") as f: for each_line in f.readlines(): if not each_line or each_line == "\n": continue if count < 1000: sql.append(each_line.strip()) count += 1 else: #达到1000行时执行 time += 1 print('{}第{}次开始执行sql语句,记录数:{}'.format(filename, time, count)) cur.execute("".join(sql)) conn.commit() sql = [each_line.strip()] count = 1 #读取完文件,不到1000行 if sql: time += 1 print('{}第{}次开始执行sql语句,记录数:{}'.format(filename, time, count)) cur.execute("".join(sql)) conn.commit()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
2017-11-07 oracle闪回查询
2012-11-07 c#利用zlib.net对文件进行deflate流压缩(和java程序压缩生成一样)