python分割sql文件

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

之前用joomla帮一学校做了个网站,然后要部署到他们到服务器上,他们只提供了sftp和phpmyadmin的账号,上传网站文件倒是挺顺利的,但后来用phpmyadmin导入MySQL数据就遇到问题了:由于他们设置的phpmyadmin最大只能导入2M的sql文件,如果太大会导致无法导入成功,但是我的sql文件有17M呀~~~~~~~~~

没得办法,只能分割sql文件了,初学python,于是就当练习,用python写了个分割sql文件的脚本:

#由于导出的sql文件总共95张表,每张表前都有这段字符 -- -------------------------------------,于是就以这段字符作为判断标准,将每10张表写入一个文件中,这样单个文件导入就可以啦!!

#以下是python代码

#!/usr/bin/python3.3

import re

def main():

#先得到要分割的文件的起始和结束位置所在行数并放入列表x中

count,total,j,l = 0, 0, 0, 0

x = [0,]

fin = open('cdu.sql','r')

for line in fin:

total += 1

if re.search('-- -----*',line): #以此判断表的数量

count += 1

if count % 10 == 0: #每到10张表时将分割的行数写入x列表中

#PRint(count,total)

x.append(total)

x.append(len(open('cdu.sql').readlines())+1) #将最后一行也放入x中

for i in x:

print(i,end = ' ')

print()

cnt=1

#读取x中的行数,起始和结束位置将文件内容复制到新文件中

for i,j in enumerate(open('cdu.sql','r')):

if i<=x[cnt]:

with open('%dcdu.sql'%cnt,'a+') as f:

f.write(j)

else:

cnt+=1

print("wirte file"+str(cnt))

print("ok")

if __name__=='__main__':main()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航