Kettle PDI:更好的查找和插入更新或插入更新+查找

Kettle PDI: better lookup and insert update or insert update + lookup

在 Kettle(又名 Pentaho 数据集成)中,我读取了一些产品链接到某些类别的 xls,然后将它们插入到数据库中。

类别-产品的关系是1:n(一个类别有多个产品,一个产品属于一个类别)。 我先插入类别,再插入产品。

案例 1:

  1. Insert/update 类别(真的,我只插入);
  2. 按代码查找类别和return其他步骤中使用的id;

案例 2:

  1. 按代码查找类别;
  2. 过滤行:if(id>0)则转其他步骤;否则转到第 3 步;
  3. 插入类别和return ID;

案例 1 还是案例 2 更好(faster/memory 使用)?

相同的选择适用于子类别、供应商和其他相关实体。

实际上我使用案例 1,pdi 每秒处理 4 条记录,我有包含 100k 条记录的文件。

我建议使用第二种方法,阅读产品并为每个产品使用 Lookup steam 找到产品的一个类别。

之所以这样做,是因为这是人类的思维方式。还有就是。 Lookup stream(不是 Lookup Database)非常优化。在某些情况下甚至比数据库左连接更快。