【发布时间】:2017-06-12 21:53:56
【问题描述】:
我正在尝试在 Python 中加入 2 个表。 (使用 Windows,jupyter 笔记本。)
表1是使用pandas读取的excel文件。
TABLE_1= pd.read_excel('my_file.xlsx')
表 2 是 oracle 数据库中的一个大表,我可以使用 pyodbc 连接到它。我可以像这样使用pyodbc成功读取整个表,但是运行需要很长时间。
sql = "SELECT * FROM ORACLE.table_2"
cnxn = odbc.connect(##########)
TABLE_2 = pd.read_sql(sql, cnxn)
所以我想做一个内部连接作为 pyodbc 导入的一部分,这样它运行得更快,我只拉入需要的记录。表 1 和表 2 共享相同的唯一标识符/主键。
sql = "SELECT * FROM ORACLE.TABLE_1 INNER JOIN TABLE_2 ON ORACLE.TABLE1.ID=TABLE_2.ID"
cnxn = odbc.connect(##########)
TABLE_1_2_JOINED = pd.read_sql(sql, cnxn)
但这不起作用。我收到此错误:
DatabaseError: sql 'SELECT * FROM ORACLE.TABLE_1 执行失败 ORACLE.TABLE1.ID=TABLE_2.ID 上的内部连接 TABLE_2:('42S02','[42S02] [Oracle][ODBC][Ora]ORA-00942: 表或视图不存在\n (942) (SQLExecDirectW)')还有其他方法可以做到这一点吗?当我只需要加入几百条记录时,必须导入包含数百万条记录的整个表似乎非常低效。谢谢。
【问题讨论】:
-
你
TABLE_1是否也存在于数据库中? -
不,TABLE_1 只存在于 excel 中,我使用 pandas pd.read_excel() 方法导入了它。