【发布时间】:2017-12-07 07:36:07
【问题描述】:
我无法将 csv 数据导入 Oracle 表。
错误:
Traceback (most recent call last): File "H:/Standard_Procedures/Dataset_Management/Table_to_Oracle.py", line 139, in <module> sde_cursor.execute(insert_string,row) DatabaseError: ORA-01747: invalid user.table.column, table.column, or column specification
代码:
with open(dataset) as f:
reader = csv.reader(f, delimiter=',')
column_string = ','.join(next(reader)).translate(None,'"')
insert_string='INSERT INTO {} ({}) VALUES ('.format(dataset_name, column_string)
val_list=[]
for i in range(1,len(first_row)+1):
val_list.append(':'+ str(i))
value_string=','.join(val_list)
insert_string += value_string + ')'
for row in reader:
print 'Insert String = {}'.format(insert_string)
print 'Row = {}'.format(row)
sde_cursor.execute(insert_string,row)
打印结果:
Insert String = INSERT INTO area_harvest_summary_20170629a (PERIOD,YEAR,PERIODWIDTH,ObjectID,TSA_UKEY,POLY_NUM,CLUSTER,FMU,LANDBASE,WATERSHED,COMPARTMENT,OWNERSHIP,AREA,YC,Cover,AgeAtHarvest,HarvestYear,Treatment,NewYc,PriConifer, PriDecid,IncConifer,IncDecid,ConiferPieceSize,DecidPieceSize) 值 (: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)
行 = ['1', '10', '10', 'A14029867', '7025115', '851840750', 'A14010716', 'A14', 'CON', '480', 'A14-A ','Northlan','9.022459984','5','C_Mx_Sw','118','5','Inten','5','1718.527663','0','0','598.0849757', '0.371338338', '0.287112087']
我尝试过 zip(row) 和 zip(row,val_list) 但也没有。Row 中数字的字符串格式有问题吗?如果是这样,我该如何解决这个问题?我也尝试了一些我在 google 上找到的方法,但同样没有运气。
理想情况下,我希望在 executemany 语句中这样做,但是这方面的所有努力也都不起作用。
【问题讨论】:
-
从错误看来您的 SQL 不正确。或许先在 SQL*Plus 中尝试一下?
标签: python python-2.7 csv cx-oracle