【发布时间】:2018-07-18 04:14:46
【问题描述】:
我是 PDI 的新手,并且仍在学习它。我正在尝试创建将从一个文件夹中读取所有 csv 文件的转换,检查文件的数据是否正确,这意味着没有丢失/错误/错误格式的行,然后将其存储在数据库中。
我尝试的是:
- 使用
Text File Input使用 Apache Common VFS 访问 FTP 中的 CSV 文件。 - 使用
Filter Row验证并设置条件以检查 CSV 中的数据(检查文件名、字段是否存在) - 使用
Syncronize After Merge输出到 PostgreSQL 表中。我之所以使用它,是因为我还将 CSV 数据与另一个表中的数据连接起来。
我第二步的结果不是我想要的。目前它会在读取所有 csv 并将所有数据传递到下一步后进行检查,但我想要的是在读取数据时进行检查,以便它只会将正确的数据传递到下一步。我怎样才能做到这一点?有什么建议吗? (需要头脑风暴)
如果在 PDI 中无法实现,则可以读取所有数据并将其传递到下一步,但在插入数据之前会再次验证。
【问题讨论】:
-
你能给出精确的条件吗?
Filter Row逐行工作,只在流中留下与条件匹配的行。您需要一个全局条件,根据某些条件接受或拒绝整个文件。无论如何,如果该条件是“缺少/错误/错误格式?”,那么您应该在决定之前阅读整个文件。请澄清。 -
是的,它会先读取整个文件,然后将文件名与表中的数据进行比较以检查它是否是正确的文件,检查所有字段是否正确且其中的行不为空。如果其中一个条件不符合,则该文件中的数据不会被处理,也不会在该文件中插入事件,只有 1 行为空。
标签: kettle pentaho-data-integration pdi