使用 PDI (Kettle) 我正在使用一个CSV Input
和Table Output
步骤来填充我的数据库的入口阶段。这很好用,但是,我还想确保刚刚插入的数据满足某些条件,例如字段不为 NULL 等。
通常这将是数据库约束的工作,但是,即使数据有故障,我们也希望将数据保留在数据库中(出于调试目的。尝试调试 .csv 文件很痛苦......)。因为它只是一个临时表,它不会对完整性等造成任何麻烦。
所以为了做到这一点,我写了一些SELECT Count(*) as test123 ...
语句来立即显示是否有问题并且很容易处理(如果 test123 的值为 0 一切都很好,否则需要中止工作)。
我正在使用Execute SQL Statements
PDI 转换中的一个步骤执行这些语句。我希望结果会自动传递给我的数据流,因此我还使用了一个Copy rows to result
步骤将其传递给正在执行的作业。
这是最有可能出现问题的地方。我认为 SELECT 语句的结果不会自动传递给我的数据流,因为当我Simple evaluation
在主要工作中使用变量${test123}
(我认为这将通过执行隐式创建SELECT Count(*) as test123 ...
)时,我永远不会得到预期的结果。
我在 PDI 文档中真的找不到任何关于这个问题的线索,所以我希望这里有人对 PDI 有一些经验并且可能能够提供帮助。如果仍有不清楚的地方,只需提示一下,我将编辑帖子以提供更多信息。
此致
编辑:这是我主要工作的一个简单模型:
开始 --> 加载数据(转换)--> 检查数据(转换)--> 简单评估 --> ...