簡體   English   中英

使用python從CSV插入oracle表

[英]Insert into oracle table from CSV using python

我正在讀取具有5列的csv文件並推送到oracle表

CSV文件結構

我知道這方面有很多資源。但是即使如此,我仍無法找到解決問題的方法

讀取CSV到python的代碼:

 import csv
 reader = csv.reader(open("sample.csv","r"))
 lines=[]
 for line in reader:
      lines.append(line)
  print lines 

輸出:

[['Firstname','LastName','email','Course_name','status'],['Kristina','Bohn','abc@123.com','Cnally管理中的二氧化碳分析指南病患者(CE)”,“注冊”],[“佩吉”,“盧茲”,“ gef@123.com”,“在阿片類葯物分娩期間監測EtCO2的指南(CE)”,“進行中”]]

將列表推送到Oracle表的代碼:

import cx_Oracle
con = cx_Oracle.connect('username/password@tamans*****vd/Servicename')
ver=con.version.split(".")
print(ver)
cur=con.cursor()
cur.execute("INSERT INTO TEST_CSODUPLOAD ('FIRSTNAME','LASTNAME','EMAIL','COURSE_NAME','STATUS') VALUES(:1,:2,:3,:4,:5)",lines)
con.commit ()
cur.close()

我收到錯誤消息:

DatabaseError:ORA-01484:數組只能綁定到PL / SQL語句

請幫我解決問題

問題是您試圖將數組傳遞給單個插入語句。 您在這里有兩個選擇:

1)使用循環分別插入每一行:

for line in lines:
    cursor.execute("insert into ...", line)

2)代替使用cursor.executemany()進行數組插入

cursor.executemany("insert into ...", lines)

第二種方法效率更高,但是您必須確保每一行的數據類型都是一致的。 如果一行中有一個數字,而下一行中有一個字符串,則會出現錯誤。

文檔提供了更多詳細信息。

感謝您的回答:)我從

cur.execute("INSERT INTO TEST_CSODUPLOAD ('FIRSTNAME','LASTNAME','EMAIL','COURSE_NAME','STATUS') VALUES(:1,:2,:3,:4,:5)",lines)

cur.executemany("insert into TEST_CSODUPLOAD(Firstname,LastName,email,Course_name,status) values (:1, :2, :3, :4,:5)", lines)

該錯誤表示它在這里所說的

這不是錯誤。 您正在發出SQL查詢,而不是PL / SQL語句,Oracle不支持這種情況。 在這種情況下,您可以簡單地傳遞字符串。 如果您有多個字符串,則需要使用子查詢。 查看table()和cast()運算符以獲取靈感!

您還可以轉儲到sql文件中並執行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM