mysql和hana_使用python将数据从MySQL移动到SAP HANA

我正在尝试使用Python将数据从MySQL数据库迁移到HANA。我们目前在工作中实现迁移的方式是手动的,但计划是每天运行一个脚本来收集前一天的数据(存储在MySQL中),并将其移动到HANA以使用他们的分析工具。我编写了一个包含两个函数的脚本,一个连接到MySQL,并将查询中的数据临时存储在Pandas数据框中。第二个函数使用sqlalchemy hana连接器创建一个引擎,我将其输入Pandas的to\u sql函数,以将数据存储到hana中。在

下面是对MySQL的第一个函数调用def connect_to_mysql(query):

try:

#connect to the db

stagedb = myscon.connect(

user = 'user-name',

password = 'password',

host = 'awshost.com',

database = 'sampletable',

raise_on_warnings = True)

df = pandas.read_sql(query, stagedb)

except myscon.Error as err:

if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

print('Incorrect user name or password')

elif err.errno == errorcode.ER_BAD_DB_ERROR:

print("Database does not exit")

else:

print(err)

finally:

if central_stagedb:

central_stagecur.close()

central_stagedb.close()

return df

这是连接到HANA的第二个函数调用

^{pr2}$

我的hahadb在catalog文件夹中有多个模式,其中许多与“SYS”或“\u SYS”相关。我创建了一个单独的模式来测试我的代码并在其中运行,它与我的用户名同名。在

我的问题是这样的:1)有没有一种更有效的方法来将数据从MySQL加载到Hana,而不使用CSV文件,或者在我的例子中,使用Pandas数据帧。使用VS代码,脚本完成大约需要90秒;2)使用sqlalchemy hana连接器时,它如何知道要创建表并将数据存储/附加到哪个架构?自述文件没有真正解释。幸运的是,它将它存储在正确的模式中(使用我的用户名的模式),但我创建了另一个模式作为测试,当然,该表没有显示在该模式下。如果我试图在create_engine行中指定数据库:engine = create_engine('hana://username:password@host:port/Username')

我得到这个错误:TypeError:connect()得到了一个意外的关键字参数“database”。

另外,我注意到,如果我要运行脚本两次并计算所创建表中的行数,那么它会将这些行添加两次—本质上就是创建重复项。因此,3)迭代抛出Dataframe中的行并使用pyhdb包逐个插入行是否更好?在

如有任何建议/建议/答案,我们将不胜感激!谢谢您!在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值