我正在尝试将从 csv 派生的数据框插入到 Oracle 表中,并收到上述消息。
try:
dfTuple = [tuple(x) for x in dfOrders.values]
sqlTxt = 'INSERT INTO SCHEMA.MYTABLE\
(Field1, Field2, Field3, Field4, Field5)\
VALUES (:1, :2, :3, :4, :5)'
cursor.executemany(sqlTxt, [x for x in dfTuple])
rowCount = cursor.rowcount
print("number of inserted rows =", rowCount)
connection.commit()
except Exception as err:
print('Error while inserting rows into db')
print(err)
finally:
if(connection):
cursor.close()
connection.close()
我已经尝试了 ( { [ 与 VALUES 的所有类型的变体,但似乎都不起作用。在数据库字段 1-5 中是 INT、INT、VARCHAR、DATE、VARCHAR...我是否需要以某种方式转换数据帧 (首先作为所有对象)进入每个正确的数据类型?
这就是 dfTuple 的样子,原始的 dfOrders.dtypes 将所有内容显示为对象:
根据 oracle-cx 文档中的示例
data = [
(10, 'Parent 10'),
(20, 'Parent 20'),
(30, 'Parent 30'),
(40, 'Parent 40'),
(50, 'Parent 50')
]
cursor.executemany("insert into ParentTable values (:1, :2)", data)
尝试使用不带单个引号的整数值进行元组样本