【发布时间】:2021-03-03 23:04:06
【问题描述】:
使用 cx_Oracle 库通过 python 3 将数据加载到 oracle。这是代码sn-p:
for fl in processing_list:
fname = fl.split('/')[-1]
data_set = []
data_reader = csv.reader(open(fl,'r'),delimiter='|')
for rec in data_reader:
rec.insert(0,fname)
data_set.append(rec)
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))
print(data_set[error.offset])
它在插入和给出错误消息时工作正常。 但是,我需要有错误的记录并将其保存在文件中。 试图通过 Row Offset 找到记录,但它没有给出正确的记录。 我怎样才能得到错误的记录? 请提出前进的道路。
【问题讨论】:
-
供未来读者参考,cx_Oracle 文档位于Batch Statement Execution and Bulk Loading。
标签: python python-3.x oracle cx-oracle