我从Python连接到HANA数据库,并使用以下代码将模式中的任何给定表读取到Pandas数据帧中:
from hdbcli import dbapi
conn = dbapi.connect(
address=XXXX,
port=32015,
user="username",
password="password",
)
schema = <schema_name>
tablename = <table name>
pd.read_sql(f'select * from {schema}.{tablename}',conn)这段代码工作没有任何问题-我能够将表格下载到Pandas数据框中。
然而,我无法上传任何熊猫数据帧回HANA数据库,即使它是相同的模式。
xy.to_sql('new_table',conn)我甚至尝试在HANA Studio中预定义要上传到的表,并定义它的列和数据类型。尽管如此,我还是得到以下错误:
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': (259, 'invalid table name: Could not find table/view SQLITE_MASTER in schema <RANDOM_SCHEMA>: line 1 col 18 (at pos 17)')
需要注意的是,上述错误中的与上面定义的模式不同,但它是HANA Studio的我的用户名。
我认为既然我可以将表读入数据帧,那么我应该能够将数据帧写入HANA DB表。我说错了吗?我遗漏了什么?
发布于 2021-04-20 05:59:41
由于某些原因,代码试图从SQLlite目录表sqlite_master中读取数据,但是该表在HANA (或任何其他非SQLlite的数据库管理系统)上不存在。不确定是否可以将PANDAS配置为以不同方式使用不同的DBMS。但是,对于HANA,有一个“机器学习”python库可用,它提供了数据帧与HANA数据库的轻松集成。
https://stackoverflow.com/questions/67166045
复制相似问题