Pentaho表输入批量输出表

问题描述:

我在MySQL中的输入表有20万条记录,Oracle中的目标表为空。我需要从MySQL将整个表加载到Oracle中。我只是使用表格输入和表格输出步骤。Pentaho表输入批量输出表

PentahoProcessing

我的目的不是为了锁定源表长一段时间,而读书。 我试图实现的负载(记录数)有问题吗? 我可以在表格输出中看到Use batch update for inserts选项。我在表格输入中看不到类似的东西。有没有办法在Pentaho中执行批处理?

不用担心,20百万条记录对于PDI来说是一个小数字,如果它是开放式输入的话,您将不会锁定表格。这就是为什么Bulk load用于输出表格而非输入表格的原因。

但是,一个常见的开始陷阱是输出表上的Truncate table选项。如果你运行(不完整或并行处理)两倍的输出步骤,每一个都会锁定另一个。永远。

要加快速度:您可以对输入使用Lazy conversion复选框,以便数据保持字节格式,直到它被使用。但我不确定你在简单的输入/输出表上赢得了什么。如果在输出文件上写入日期或Blob时发生错误,那么错误信息将非常隐蔽。

您也可以通过提高提交大小(在Oracle中最糟糕的一些尝试)并增加number of rows in row set来提高输出的速度,这将增加table input读取的行数。要做到这一点,右键单击任何地方然后Properties/Miscelanous

我真正建议做的事情是增加JVM内存大小。使用编辑器(记事本或更好)编辑名为spoon.bat的文件。你会在第94-96行附近找到包含“-Xmx256K”之类的行。将其更改为“-Xmx4096M”(其中4096是机器RAM的一半大小)。

执行“批处理”有很多含义。其中之一是Make the transformation database transactional。您可以使用上面提到的Number of row in rowset(在PDI最新版本中拼写为Make the transformation database)下方的复选框来执行此操作。选中该框后,如果出现问题,数据库的状态会回滚,就好像转换从未执行过一样。但我不建议你这样做。