我们希望为用户提供上载数据并将其插入/导入表的可能性。来自用户的数据位于CSV文件中。
到目前为止,我们考虑了三种可能性:
IMPORT FROM
语句导入目前,我们建议直接导入(XSJS插入),因为用户能够打开文件选择对话框并选择文件。 (简单)
不幸的是,插入速度非常慢(20分钟/ 1 Mio行)。
批量插入减少到大约5分钟
并行调用具有100k软件包的Batch-Import XSJS大约需要1分钟。
但是具有4个线程的CSV导入命令IMPORT FROM
比1分钟(约15秒)要快得多
所以问题是如何快速将数据导入HANA(最好使用XSJS技术)
系统环境
我们在XS Engine中内置了一个Web用户界面,用于执行各种数据密集型任务。
一项新任务是将数据加载到SAP HANA中以进行进一步处理。
数据以合作伙伴公司的CSV文件格式
答案 0 :(得分:2)
通过XSJS馈入数据是一种要求数据传递许多系统边界的方法。使用基于JDBC / ODBC的数据加载工具通常是更好的方法。
IMPORT
和IMPORT FROM
都是服务器端命令,它们需要访问文件系统共享,SAP HANA节点也可以访问该文件系统共享。
它们主要用于“技术”数据加载,例如进行系统复制和开发人员/管理员数据移动。
最终用户不是目标受众。
鉴于您提到最终用户应该能够加载数据,因此可以为他们提供这样的数据加载工具(甚至可以自己编写一个简单的数据)。
或者,如果数据结构不经常更改,则使用SDI可能是可行的选择。
答案 1 :(得分:0)
我们使用Java进行了一些快速的测试(带有多线程的Java的速度是XSJS的两倍)。
由于客户想要一个Web GUI,而Java Webstart已过时,并且还有更多问题,因此我们现在使用Web解决方案:
SignalR
var conn = $.hdb.getConnection();
重要的是
conn.executeUpdate('INSERT INTO ' + schemaName + '.' + targetTableName + ' VALUES(' + placeholder + ')', argsArray);
连接而不是$.hdb
连接(许多教程使用$.db
连接。