我是PDI和Kettle的新手,我认为这是一个简单的实验来教自己一些基本知识,但现在却变成了很多挫折。
我想检查一个数据库,看看是否存在一个特定的记录(即供应商)。我想从读取平面文件(.CSV)中获得供应商的名称。
我的第一个障碍是只从CSV中的8个字段中选择供应商名称。
第二个障碍是如何在数据库查询中使用供应商名称作为变量。
我的第三个问题是用于数据库查找的步骤的类型。
我尝试了一个动态SQL查询,但无法确定如何使用变量构建查询,然后如何将所需的值传递给变量。
数据库表(VendorRatings)有30个字段,其中一个是供应商。CSV还有8个字段,其中一个也是供应商。
我最大的努力是使用一个动态查询,使用: SELECT * FROM VENDORRATINGS,哪个供应商=?
如何以编程方式将所需的值分配给"?“在查询中?具体来说,如何将特定字段的输出从文本文件输入链接到“供应商=”?SQL查询?
发布于 2018-11-21 10:48:50
,因为事实上
我建议以下流程:

读取CSV,并在表中查找每一行(即:查找表是SQL表,而不是CSV文件)。并将默认设置为不匹配。我建议一些明显的东西,比如“-不匹配-”。
然后,在不匹配的情况下,过滤器将流重定向到替代操作(此处:插入SQL表)。然后这两个流合并到下游流中。
发布于 2018-11-20 09:16:04
最佳实践是Stream lookup。对于主流(VendorRating)中的每个记录,根据其标识符(可能是其编号或名称或firstname+lastname),在参考文件( CSV)中查找供应商详细信息(查找字段)。

第一个“关卡”:一旦定义了csv文件的路径,就按Get field按钮。
它将以第一行作为标题来知道字段名,并探索前100条(可定制的)记录来确定字段类型。
如果名称不在第一行,请取消选中Header row present,按Get field按钮,然后更改面板上的名称。
如果有多个标题行或其他复杂情况,请使用Text file input。
对于lookup step同样有效:使用Get lookup field按钮并删除不需要的字段。
https://stackoverflow.com/questions/53385287
复制相似问题