我正在尝试使用 Python 插入我的 Oracle 表cx_oracle,但出现以下错误: cx_Oracle.数据库错误: ORA-01008: 未绑定所有变量
my input file (test.log) has below content:
123:ABC:676:101:1014
131:BCD:668:110:1103
155:ABE:663:110:1107
conn = cx_Oracle.connect(user='user', password='pwd', dsn='localhost:1521/mydb')
reader = csv.reader(open("C:\test.log", "r"))
rec = []
curs=conn.cursor()
for line in reader:
rec.append(line)
curs.executemany("insert into MY_DB.DEPTTABLE values (:0, :1, :2, :3, :4)", rec)
任何帮助不胜感激!
您可以通过使用带有sep= ':'
(或delimiter=':'
(参数的函数来弄清楚pandas.read_csv()
以便用冒号字符拆分每一行:
import pandas as pd
import cx_Oracle
conn = cx_Oracle.connect(user='user', password='pwd', dsn='localhost:1521/mydb')
curs=conn.cursor()
df = pd.read_csv(r'C:\test.log',sep= ':',header=None) #to start from the top(first) row
rec = df.astype(str).values.tolist()
for i in range(len(rec)):
curs.prepare('INSERT INTO MY_DB.DEPTTABLE VALUES(:0, :1, :2, :3, :4)')
curs.executemany(None,([rec[i]]))
conn.commit()
conn.close
其中rec
是list
类型参数。
问题出在您的读者调用上,您需要为其提供分隔符参数:
reader = csv.reader(open("C:\test.log", "r"), delimiter=':')
否则,行变量只是一个字符串,而不是一个值元组。