将csv加载到Oracle中的表中
问题描述:
我无法将csv数据存入Oracle表中。将csv加载到Oracle中的表中
ERROR:
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
CODE:
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 INTO area_harvest_summary_20170629a(PERIOD,YEAR,PERIODWIDTH,的ObjectID,TSA_UKEY,POLY_NUM,群集FMU,土地基础,分水岭,价值(: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),但都没有。它是行数字符串格式的问题吗?如果是这样,我该如何解决这个问题?我也尝试了一些我在谷歌上找到的方法,但是再次没有运气。
理想情况下,我想在executemany声明中这样做,但是在这方面的所有努力都不起作用。
答
您已经扭转VALUES
与rows
枚举,更改为以下:
with open(dataset) as f:
...
# Don't change insert_string
# insert_string += value_string + ')'
for row in reader:
# Append this row Data
print 'Insert String = {}'.format(insert_string + row)
sde_cursor.execute(insert_string + row)
从错误又好像你的SQL不正确。也许首先在SQL * Plus中尝试它? –