Pentaho表批量输入表输出

Sri*_*niV 2 mysql transformation pentaho kettle

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

PentahoProcessing

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

Ala*_*inD 5

不用担心,对于PDI,20百万条记录是一个小数字,如果表格是打开输入的话,你就不会锁定它.这就是Bulk load输出表不是输入表的原因.

但是,常见的beginer陷阱是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(和Make the transformation databasePDI最新版本中的拼写错误)进行操作.选中该框后,如果出现问题,数据库的状态将回滚,就好像转换从未执行过一样.但我不建议你这样做.