首页 > 代码库 > python分割sql文件

python分割sql文件

之前用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()