首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python将数据从MySQL迁移到SAP

用python将数据从MySQL迁移到SAP
EN

Stack Overflow用户
提问于 2017-06-22 00:02:46
回答 1查看 1.8K关注 0票数 0

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

下面是对MySQL的第一个函数调用

代码语言:javascript
复制
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的函数调用。

代码语言:javascript
复制
def connect_to_hana(query):
    #connect to HANA db
    try:
        engine = create_engine('hana://username:password@host:port')
        #return dataframe from first function
        to_df = connect_to_mysql(query)
        to_df.to_sql('sample_data', engine, if_exists = 'append', index = False, chunksize=20000)
    except: raise

我的HAHA DB在目录文件夹中有几个模式,其中许多模式与"SYS“或"_SYS”相关。我已经创建了一个单独的模式来测试我的代码并在其中运行,它的名称与我的用户名相同。

我的问题是:( 1)是否有一种更有效的方法将数据从MySQL加载到Hana,而不使用CSV文件或在我的示例中使用这样的中间操作。使用VS代码,脚本完成大约需要90秒,当使用sqlalchemy连接器时,它如何知道创建表和存储数据/将数据追加到哪个模式?读过的文件并没有真正解释。幸运的是,它将它存储在正确的模式中(使用我的用户名的模式),但是我创建了另一个模式作为测试,当然表没有显示在该模式下。如果我试图按如下方式在create_engine行中指定数据库:

代码语言:javascript
复制
engine = create_engine('hana://username:password@host:port/Username')

我得到了这个错误:TypeError: connect()获得了一个意外的关键字参数‘’。

另外,我注意到,如果我两次运行我的脚本并计算创建的表中的行数,它会添加两次行--本质上是创建重复的。因此,3)迭代抛出Dataframe的行并使用pyhdb包逐个插入行好吗?

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

EN

回答 1

Stack Overflow用户

发布于 2017-06-22 05:02:12

哎呀..。这似乎是一个相当复杂的工作流。或者,您可能希望检查HANA功能智能数据访问(SDA)和智能数据集成(SDI)。有了这些,您可以在SAP中建立“虚拟”数据访问,即在运行分析查询时将数据从MySQL DB读入HANA进程。或者您可以将数据实际加载到HANA中,使其成为一个数据集市。

如果这只是数据传输的“管道”,我可能不会把第三方的工具放到这个场景中。这只会使设置变得过于复杂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44688029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档