Я пытаюсь вставить файл xls в таблицу оракулов с помощью cx_Oracle.Ниже описан способ, с помощью которого я пытаюсь добиться того же.
wb = open_workbook('test.xls')
values=[]
sheets=wb.sheet_names()
xl_sheet=wb.sheet_by_name(s)
sql_str=preparesql('MATTERS') ##this is function I have created which will return the insert statement I am using to load the table
for row in range(1, xl_sheet.nrows):
col_names = xl_sheet.row(0)
col_value = []
for name, col in zip(col_names, range(xl_sheet.ncols)):
searchObj = re.search( (r"Open Date|Matter Status Date"), name.value, re.M|re.I)
if searchObj:
if (xl_sheet.cell(row,col).value) == '':
value = ''
else:
value = datetime(*xlrd.xldate_as_tuple(xl_sheet.cell(row,col).value, wb.datemode))
value = value.strftime('%d-%b-%Y ')
else:
value = (xl_sheet.cell(row,col).value)
col_value.append(value)
values.append(col_value)
cur.executemany(sql_str,values,batcherrors=True)
Но когда я тестировал его на нескольких файлах xls для некоторых файлов, он выдавал TypeError: Я не могу поделиться данными из-за ограниченийот клиента. Я чувствую, что проблема связана с d-типом столбцов в Excel по сравнению с БД.Есть ли способ, которым я могу сопоставить dtpes из списка значений выше, чтобы соответствовать типу данных столбцов в БД, или есть ли другие способы сделать вставку?Я пытался использовать dataframe.to_sql, но это занимает много времени.Я могу вставить те же данные, просматривая строки в списке значений.