从Oracle数据库导入数据到熊猫时的ORA-00942

时间:2020-06-10 06:23:42

标签: python pandas oracle

我尝试将数据从oracle数据库导入到pandas数据框。

对,现在我正在使用:

import cx_Oracle
import pandas as pd
db_connection_string = '.../A1@server:port/servername'
con = cx_Oracle.connect(db_connection_string)
query = """SELECT* 
           FROM Salesdata"""
df = pd.read_sql(query, con=con)

,并出现以下错误:DatabaseError: ORA-00942: Table or view doesn't exist

当我运行查询以获取所有表的列表时:

cur = con.cursor()
cur.execute("SELECT table_name  FROM dba_tables")
for row in cur:
    print (row)

输出看起来像这样:

('A$',)
('A$BD',)
('Salesdata',)

我做错了什么?我用这个question开始。

如果我对print(query)使用注释,则会得到:

SELECT* 
           FROM Salesdata

1 个答案:

答案 0 :(得分:1)

运行SELECT时获取ORA-00942可能有两种原因:

  1. 该表不存在:此处应确保表名以表所有者(模式名)为前缀,如select * from owner_name.table_name中所示。如果当前连接的Oracle用户不是表所有者,则通常需要这样做。

  2. 您在表上没有SELECT特权。如果当前连接的Oracle用户不是表所有者,则通常也需要这样做。

您需要同时检查两者。

相关问题