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