Pentaho表批量输入表输出


撩心
2025-03-18 09:54:31 (21天前)
  1. MySQL中的输入表有20万条记录,Oracle中的目标表是空的。我需要将整个表从MySQL加载到Oracle中。我只是使用表输入和表输出步骤。

3 条回复
  1. 0# 清 月 | 2019-08-31 10-32



    不用担心,对于PDI来说,20百万条记录是一个小数字,如果表格打开输入,你就不会锁定它。这就是为什么

    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

    (并且拼凑为

    Make the transformation database

    在PDI最新版本)。选中该框后,如果出现问题,数据库的状态将回滚,就好像转换从未执行过一样。但我不建议你这样做。


  2. 1# 易米烊光 | 2019-08-31 10-32



    另外还有@AlainD解决方案有几种选择:

    • 调整MySQL以获得更好的插入性能
    • 在PDI中使用MySQL批量加载程序步骤
    • 使用PDI将SQL语句写入文件,并使用mysql-binary读取它们



      使用一些简单的JDBC连接设置可以提高速度。




      • useServerPrepStmts =
        </强>


      • rewriteBatchedStatements =
        1. 真正
        </强>


      • useCompression =
        1. 真正
        </强>


登录 后才能参与评论