【问题标题】:SAP HANA : Most performant way to insert / import data into tables from CSV filesSAP HANA:将数据从 CSV 文件插入/导入表的最高效方式
【发布时间】:2018-08-16 10:17:45
【问题描述】:

我们希望为用户提供上传和插入/导入数据到表中的可能性。来自用户的数据是 CSV 文件。

到目前为止,我们想到了三种可能性:

  • 通过 XSJS 应用程序直接导入 ->(批量)插入每一行
  • 通过IMPORT FROM声明导入
  • SDI(复制)

目前我们倾向于直接导入(XSJS 插入),因为用户能够打开文件选择对话框并选择文件。 (简单)

不幸的是,插入速度非常慢(20 分钟/1 Mio 行)。
批量插入减少到大约 5 分钟
并行调用 100k 包的 Batch-Import XSJS 减少到大约 1 分钟。

然而 CSV 导入命令 IMPORT FROM 与 4 线程比 1 分钟快得多(大约 15 秒)

所以问题是如何快速将数据导入 HANA(最好使用 XSJS 技术)

系统环境

我们在 XS 引擎中构建了一个网络用户界面,用于执行各种数据密集型任务。

一项新任务是将数据加载到 SAP HANA 中进行进一步处理。

数据来自合作伙伴公司的 CSV 文件

【问题讨论】:

    标签: import insert database-performance hana


    【解决方案1】:

    通过 XSJS 输入数据是一种需要数据通过许多系统边界的方法。在这里使用基于 JDBC/ODBC 的数据加载工具通常是更好的方法。

    IMPORTIMPORT FROM 都是 服务器端 命令,需要访问 SAP HANA 节点也可以访问的文件系统共享。

    它们主要用于“技术”数据加载,例如制作系统副本和开发人员/管理员数据移动。
    最终用户不是目标受众。

    鉴于您提到您的最终用户应该能够加载数据,因此在这里为他们提供这样一个数据加载工具(甚至可以自己编写一个简单的工具)可能是一种选择。

    或者,如果数据结构不经常更改,则使用 SDI 可能是一个可行的选择。

    【讨论】:

    • 感谢 Lars 指出导入命令的意图。
    • 不幸的是,我们只能使用 XSJS,因为我们还没有迁移到 XSA(否则我们将使用 Java)。但看起来批量插入是缓慢的部分 - 不是从客户端到 HANA 的传输。
    • 进一步解释问题中的用例
    • @Thorsten 您认为您可以分享解决方案吗?提前致谢!
    • @SuShuang 确定查看答案 - 希望这会有所帮助
    【解决方案2】:

    我们用 Java 做了一些测试,速度很快(多线程的 Java 是 XSJS 的两倍)。

    由于客户想要的是一个 web-gui 并且 Java Webstart 已被弃用并且还有一些问题,我们现在使用 web 解决方案:

    1. var conn = $.hdb.getConnection();
    2. conn.executeUpdate('INSERT INTO ' + schemaName + '.' + targetTableName + ' VALUES(' + placeholder + ')', argsArray);

    重要的是

    • 使用较新的$.hdb 连接而不是$.db 连接(许多教程使用$.db 连接。
    • 使用批量插入

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多