Data Files:
Output:
Source Code:
import sys
import csv
import os.path
def convert(sourcecsv, targetcsv):
if not os.path.isfile(sourcecsv):
print ("File [%s] is not invalid. Quiting..." % (sourcecsv))
return
if not os.path.isfile(targetcsv):
print ("File [%s] is not invalid. Quiting..." % (targetcsv))
return
sourcelist = []
targetlist = []
validlist = []
with open(sourcecsv,'r') as f:
reader = csv.reader(f, delimiter = ',')
for row in reader:
if len(row) > 0 :
sourcelist.append([int(row[0].strip()),row[1].strip()])
with open(targetcsv,'r') as f:
reader = csv.reader(f, delimiter = ',')
for row in reader:
if len(row) > 0 :
targetlist.append([int(row[0].strip()),row[1].strip()])
# source the list based on group# sourcelist.sort()
targetlist.sort()
for (gid1,member1) in sourcelist:
for (gid2, member2) in targetlist:
if gid1 == gid2:
if member1[1] == ':':
if member1[0:1] == member2[0:1]:
validlist.append([gid1,member1,member2])
else:
if member1[1:].split('/')[0] == member2[1:].split('/')[0]:
validlist.append([gid1,member1,member2])
for (gid,member1,member2) in validlist:
print("alter database rename file '%s' to '%s';" % (member1,member2))
sourcelist.remove([gid,member1])
targetlist.remove([gid,member2])
print('\n')
for (gid,member1) in sourcelist:
print("Redo log without match in source file: {0:d}, {1}".format(gid,member1))
print('\n')
for (gid,member2) in targetlist:
print("Redo log without match in target file: {0:d}, {1}".format(gid,member2))
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python %s source_redo_file.csv target_redo_file.csv" % (sys.argv[0]))
print("These CSV files in format:group#,member")
print("Reference SQL: select group#||','||member from v$logfile order by group#")
exit(1)
convert(sys.argv[1],sys.argv[2])
No comments:
Post a Comment