之前用joomla帮一学校做了个网站,然后要部署到他们到服务器上,他们只提供了sftp和phpmyadmin的账号,上传网站文件倒是挺顺利的,但后来用phpmyadmin导入mysql数据就遇到问题了:由于他们设置的phpmyadmin最大只能导入2M的sql文件,如果太大会导致无法导入成功,但是我的sql文件有17M呀~~~~~~~~~
没得办法,只能分割sql文件了,初学python,于是就当练习,用python写了个分割sql文件的脚本:
#由于导出的sql文件总共95张表,每张表前都有这段字符 -- -------------------------------------,于是就以这段字符作为判断标准,将每10张表写入一个文件中,这样单个文件导入就可以啦!!![](http://bbs.linuxtone.org/static/image/smiley/comcom/4.gif)
![](http://bbs.linuxtone.org/static/image/smiley/comcom/4.gif)
#以下是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()