我尝试将数据从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
答案 0 :(得分:1)
运行SELECT时获取ORA-00942可能有两种原因:
该表不存在:此处应确保表名以表所有者(模式名)为前缀,如select * from owner_name.table_name
中所示。如果当前连接的Oracle用户不是表所有者,则通常需要这样做。
您在表上没有SELECT特权。如果当前连接的Oracle用户不是表所有者,则通常也需要这样做。
您需要同时检查两者。