2016-10-07 2 views
0

Я начинающий питон. Я пытаюсь вставить записи в таблицу Oracle из файла csv. Формат файла csv: Artist_name, Artist_type, Страна. Я получаю ниже ошибки:Python Загрузить файл csv в таблицу Oracle

Error: File "artist_dim.py", line 42, in <module> 
    cur.execute(sqlquery) 
cx_Oracle.DatabaseError: ORA-00917: missing comma 


    import cx_Oracle as cx 
    import csv 
    import sys 

    ##### Step 1 : Connect to Oracle Database######### 
    conn_str=u'hr/[email protected]:1521/PDBORCL' 
    conn= cx.connect(conn_str) 
    cur=conn.cursor() 
    ####################################### 
    #### Step 2: FETCH LATEST ROW ID FROM ARTIST_DIM### 
    query="SELECT nvl(max(row_id)+1,1) from artist_dim" 
    cur.execute(query) 
    rownum=cur.fetchone() 
    x=rownum[0] 

    with open('D:\python\Artist.csv') as f: 
     reader=csv.DictReader(f,delimiter=',') 
     for row in reader: 
      sqlquery="INSERT INTO ARTIST_DIM VALUES (%d,%s,%s,%s)" %(x,row['Artist_name'],row['Artist_type'],row['Country']) 
        cur.execute(sqlquery) 
      x=x+1 

    conn.commit() 

Когда я пытаюсь прочитать файл, он работает правильно.

##### Just to Read CSV File############################ 
    with open('D:\python\Artist.csv') as f: 
     reader = csv.DictReader(f, delimiter=',') 
     for row in reader: 
      a="row_id %d Artist : %s type : %s Country : %s " %(x,row['Artist_name'],row['Artist_type'],row['Country']) 
      print(a) 
      x=x+1 
    print(row['Artist_name'],",",row['Artist_type'],",",row['Country']) 

Also, when I try to insert using hard coded values it is working 

    sqlquery1="INSERT INTO ARTIST_DIM VALUES (%d,'Bob','Bob','Bob')" %x 
    cur.execute(sqlquery1) 
+0

Вы можете включить вывод из утверждений печати, которые работают? –

+0

Я проверил таблицу Artist_dim, записи вставлены: - 18, \t Bob \t, Bob \t, Bob – Leo

ответ

1

кавычки для значений:

Без кавычек это приводит к:

sqlquery="INSERT INTO ARTIST_DIM VALUES (1, Bob, Bob, Bob)" 
+0

Спасибо, Ричардсон. Это сработало. – Leo

+0

Отлично! Можете ли вы принять ответ? :) –

+0

Хорошо .. Это галочка? Я очень новичок в этом форуме. – Leo

Смежные вопросы