2017-07-04 81 views
0

我無法將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聲明中這樣做,但是在這方面的所有努力都不起作用。

+0

從錯誤又好像你的SQL不正確。也許首先在SQL * Plus中嘗試它? –

回答

0

您已經扭轉VALUESrows枚舉,更改爲以下:

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)