这是我在一次数据库迁移时处理工作的一个记录。文件每行只有一列,每一行是一个数据库中的一个表名。我在做oracle impdp数据库导入时,有几十张表导入失败,我要从原始表中过滤出导入成功的表名。开始想用linux自带的diff实现,发现实现不了。就写了这样一个python脚本。
vim bj_file.py
import os
import sys
fc = open('file.txt','a')
fc.write('The different line is:\n')
x = 0
f1 = 0 #total file1 line
for linea in open(sys.argv[1]):
i = 0
f1 += 1
la =linea.strip()
for lineb in open(sys.argv[2]):
lb = lineb.strip()
if la == lb:
i = i + 1
if i == 0:
x = x + 1
fc.write(la+"\n")
f2 = open(sys.argv[2]) #total file2 line
f2a = len(f2.readlines())
fc.write(sys.argv[1]+' is '+str(f1)+' line.'+'\n')
fc.write(sys.argv[2]+' is '+str(f2a)+' line.'+'\n')
fc.write('Total '+str(x)+' line is different.')
fc.close()