为了这个问题,我有一个样本转换设置:
表输入步骤->表输出步骤。
[在运行转换并查看实时统计信息时,我看到了:
表输出步骤每秒加载〜11行,这非常慢。我在“表输出”步骤中的提交大小设置为1000。SQL输入返回40k行,并且在其自身运行而不指向表输出的情况下,在10秒内返回。输入和输出表位于同一数据库中。
系统信息:pdi 8.0.0.0Windows 10SQL Server 2017
表输出通常非常慢。
如果我没有完全弄错,它会为每个传入的行插入一个插入,这会花费很多时间。
一种更快的方法是使用“批量加载”,该批量加载使用“ LOAD DATA INFILE'FIFO File'INTO TABLE ....”将数据从Kettle内部流式传输到命名管道。
您可以在此处详细了解批量加载的工作方式:https://dev.mysql.com/doc/refman/8.0/en/load-data.html
无论如何:如果要在同一个数据库中从一个表向另一个表进行输入,那么我将创建一个“ Execute SQL script”步骤,并使用单个查询进行更新。
[如果您看一下这篇文章,您可以在单个SQL查询中了解有关从另一个表更新表的更多信息:SQL update from one Table to another based on a ID match