从源.sql写信给目的.sql用python脚本?

2024-04-23 08:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个档案源.sql你知道吗

INSERT INTO `Tbl_ABC` VALUES (1, 0, 'MMB', '2 MB INTERNATIONAL', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 12, '3D STRUCTURES', '3D STRUCTURES', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 0, '2 STRUCTURES', '2D STRUCTURES', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 111, '2D STRUCTURES', '3D STRUCTURES', NULL, NULL, 1)

我要写一个新文件叫做目标.sql.It遗嘱包括: 新文件将忽略

`INSERT INTO `Tbl_ABC` VALUES (1, dont wirte if !=0, 'MMB', '2 MB INTERNATIONAL', NULL, NULL, don't write if !=0)

我的sql可能比这个。但是位置一般保持不变。 在这种情况下,第一个数字0位于位置[1] 第二个0在位置[6](从0开始计数)

结果应该是这样。你知道吗

INSERT INTO `Tbl_ABC` VALUES (1, 0, 'MMB', '2 MB INTERNATIONAL', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 0, '2 STRUCTURES', '2D STRUCTURES', NULL, NULL, 0)

这里的任何人都可以帮我找到格式化文件的方法源.sql文件并写入新文件。 目标.sql你知道吗

谢谢。。你知道吗


Tags: 文件目标sqlifmb档案nullinsert
3条回答

您可以逐行读取,检查它是否以0结尾,并与另一行的regex匹配。你知道吗

import re
dest=open("destination.sql","w+")
for line in open("source.sql","r"):
    if line.strip().endswith("0)") and re.search("\(\d+, 0,",line):
        dest.write(line)

My sql may loger than this.but positon is keep in general. In this case the first number 0 at position[1] and the second 0 at the position[6] (start count from 0)

致S.Mark,fviktor 我试过这样

进口re

RX = re.compile(r'^.*?\(\d+,\s0,.*\s0\)\s*$')

outfile = open('destination.sql', 'w')
for ln in open('source.sql', 'r').xreadlines():
    replace1 = ln.replace("INSERT INTO `Tbl_ABC` VALUES (", "")
    replace2 = replace1.replace(")", "")
    list_replace = replace2.split(',')
    #print list_replace
    #print '%s ,%s' % (list_replace[1], list_replace[6])
    if list_replace[6]==0 and list_replace[1] == 0:
        #start write line to destination.sql!!!!!!!! NEED HELP
        #if RX.match(ln):
        outfile.write(ln)

(2,x1,'2D STRUCTURES','2D STRUCTURES','NULL,NULL,x6,15,2','NULL,NULL,NULL,NULL,'2D STRUCTURES','MAILLOT 12/08/05',-1,'tata 20/05/02',0,NULL,0,NULL,NULL)

当然,我不需要写信给你目标.sql如果位置[1]!=0和位置[6]!=0在这种情况下是x1和x6。谢谢你的帮助

像这样:

import re

RX = re.compile(r'^.*?\(\d+,\s0,.*\s0\)\s*$')

outfile = open('destination.sql', 'w')
for ln in open('source.sql', 'r').xreadlines():
    if RX.match(ln):
        outfile.write(ln)

相关问题 更多 >