python处理insert语句
2018-08-21 本文已影响0人
caihhu
工作中遇到一个如下的情况,正好利用python进行一下处理
数据库导出的insert语句是一条一条的:
insert into tableA values();
insert into tableA values();
insert into tableA values();
现在要把这些语句合并成一条:
insert into tableA values(),(),();
这个一些数据库的插件也可以直接导出,也可以使用notepad++手工进行替换,但是要是处理的比较多的文件,则是个很大的体力活。
可以利用python,把文件夹下面的sql进行替换
import os
## freplace 替换函数
def freplace(path):
list = ['insert into tableA values','insert into tableB values'] ## 需要替换不同的string
with open(path,'r') as f: ## 获取文件读的权限
lines = f.readlines() ## 获取文件行数
with open(path,'w') as f_w:
n = 0 ## 定义一下文件的行数初始值
for line in lines: ## 主要思想是 第一行的insert不需要替换,最后一行的;不需要替换,其它的替换
if n == 0:
line = line.replace(";",",") ## 把 ;替换成 ,
n += 1
elif n == len(lines)-1:
line = line.replace(list[0],"") ## 把list中的string进行替换
line = line.replace(list[1],"")
n += 1
else:
line = line.replace(list[0],"")
line = line.replace(list[1],"")
line = line.replace(";",",")
n += 1
f_w.write(line)
## replacefiles 用来遍历文件夹下的文件 然后进行替换
def replacefiles(filespath):
rootdir = filespath
list = os.listdir(rootdir)
for i in range(0,len(list)):
path = os.path.join(rootdir,list[i])
if os.path.isfile(path):
freplace(path)
if __name__ == "__main__":
replacefiles('C:\Users\Desktop\test')