我是一个新的甲骨文学习者。我正在尝试将 pandas 数据框写入 oracle 表中。上网查了一下,发现代码本身很简单,但是不知道为什么我的代码不行。
我已经从本地文件中读取了 pandas 数据框:
import cx_Oracle
import pandas as pd
import os
dir_path = os.path.dirname(os.path.realpath("__file__"))
df = pd.read_csv(dir_path+"/sample.csv")
现在打印 df,数据帧 df 应该是这样的:
DATE YEAR MONTH SOURCE DESTINATION
0 11/1/2017 1:00 2017 1 AL CO
1 11/2/2017 1:00 2017 5 GA ID
2 11/3/2017 1:00 2017 12 GA MO
然后我使用 cx_Oracle 创建与数据库的连接,它可以工作。接下来我尝试将数据帧 df 写入表 TEST。该表TEST是oracle数据库中已经存在的空表,oracle中的列包括DATE、YEAR、MONTH、SOURCE、DESTINATION。所有数据类型都与 df 样本数据匹配。我的代码如下:
conn_str = u'account/password@host:1521/server'
conn = cx_Oracle.connect(conn_str)
# Write records stored in a DataFrame to a oracle database
df.to_sql('TEST', conn, if_exists='replace') # the error shows here
conn.close()
它显示错误:
DatabaseError: 执行失败 sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ORA-01036: 非法变量名/编号
如何解决问题?非常感谢您的宝贵时间!