首页 » 产品日记 » 正文

python快速处理超大sql文件

需求是这样的,总会遇到几个巨大无比的数据库备份文件,工具导入的时候经常就是各种问题,要么是慢,要么是丢数据(反正我是遇到了),如果有个办法能快速的把大文件按数据库或数据表拆分成单个小文件,然后分批或者有选择的导入到数据库不是很好?说干就干了

环境 win10
工具:python3.7+pycharm
要分割的文件大小:6G,sql文件

直接上代码了

import re

dbname = ''
with open('6g.sql','r',encoding='utf-8') as f:
    for i, db in enumerate(f):
        dbnamea = re.findall('导出 (.*?) 的数据库',db)
# 正则提取创建数据库关键字(sql是heidisql导出来的)
        if dbnamea:
            dbname = dbnamea[0]
            print('正在写入%s' % dbname)
        if dbname !='':
            with open('db/{}.sql'.format(dbname),'a+',encoding='utf-8') as fw:
                fw.write(db)

读取的速度相当快,6G的sql读完不到1分钟,分割文件(重写文件)耗时还是蛮久的,可能我写方式不对,但也不失为一个思路吧,先留个记号,后面再去想办法

发表评论