从MySQL到SAP HANA的数据迁移使用Python

2024-06-16 09:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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包逐个插入行是否更好?在

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


Tags: to数据函数脚本pandasconnectmysql模式
1条回答
网友
1楼 · 发布于 2024-06-16 09:42:31

哎呀。。。这似乎是一个相当复杂的工作流程。或者,您可能需要检查HANA功能智能数据访问(SDA)和智能数据集成(SDI)。使用这些工具,您可以在saphana中建立一个“虚拟”数据访问,也就是说,当您运行分析查询时,您可以将MySQL数据库中的数据读入HANA进程。或者您可以将数据加载到HANA中,使其成为数据集市。在

如果真的只是关于这个数据传输的“管道”,我可能不会把第三方工具放在这个场景中。这只会使设置比必要的更复杂。在

相关问题 更多 >