Finding erroneous records from batch insert data load with executemany() in cx_Oracle in Python

Loading data to oracle via python 3 using cx_Oracle library. Here is code snippet:

for fl in processing_list:
    fname = fl.split('/')[-1]
    data_set = []
    data_reader = csv.reader(open(fl,'r'),delimiter='|')
    for rec in data_reader:
    curs.executemany('insert into test_sdp_dump values(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25,:26,:27,:28,:29,:30,:31,:32,:33,:34,:35,:36,:37,:38,:39,:40,:41,:42,:43,:44,:45,:46,:47,:48,:49,:50,:51,:52,:53,:54,:55,:56,:57,:58,:59,:60,:61,:62,:63,:64,:65,:66,:67,:68,:69,:70,:71,:72,:73,:74,:75,:76,:77,:78,:79,:80,:81,:82,:83,:84,:85,:86,:87,:88,:89,:90,:91,:92,:93,:94,:95,:96,:97)',data_set,batcherrors=True)
    for error in curs.getbatcherrors():
        print('Error Message:' + error.message + 'Row Offset:' + str(error.offset))

It works fine while inserting and giving error message. However, I need to have the erroneous records and keep it in file. Tried to find the record via Row Offset but it doesn't give the correct records. How can I get the erroneous records? Suggest a way forward kindly.

Read more here:

Content Attribution

This content was originally published by Leon at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: