SAP HANA:从CSV文件向表中插入数据/将数据导入表中的最有效方法

时间:2018-08-16 10:17:45

标签: import insert database-performance hana

我们希望为用户提供上载数据并将其插入/导入表的可能性。来自用户的数据位于CSV文件中。

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

    通过XSJS应用程序
  • Direkt导入->(批量)插入每一行
  • 通过IMPORT FROM语句导入
  • SDI(复制)

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

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

但是具有4个线程的CSV导入命令IMPORT FROM比1分钟(约15秒)要快得多

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

系统环境

我们在XS Engine中内置了一个Web用户界面,用于执行各种数据密集型任务。

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

数据以合作伙伴公司的CSV文件格式

2 个答案:

答案 0 :(得分:2)

通过XSJS馈入数据是一种要求数据传递许多系统边界的方法。使用基于JDBC / ODBC的数据加载工具通常是更好的方法。

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

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

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

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

答案 1 :(得分:0)

我们使用Java进行了一些快速的测试(带有多线程的Java的速度是XSJS的两倍)。

由于客户想要一个Web GUI,而Java Webstart已过时,并且还有更多问题,因此我们现在使用Web解决方案:

  1. SignalR
  2. var conn = $.hdb.getConnection();

重要的是

  • 使用更新的conn.executeUpdate('INSERT INTO ' + schemaName + '.' + targetTableName + ' VALUES(' + placeholder + ')', argsArray);连接而不是$.hdb连接(许多教程使用$.db连接。
  • 使用批处理插入