0

我正在关注这个堆栈溢出问题中的答案。但我无法得到我期望得到的输出。我有一个示例 csv,如下所示:

id,name,city
12,Jimmy,Ontario
33,Kimmel,York

每个城市都有一个唯一的代码,我将其存储在另一个 csv 中。这就是我的 csv 用于映射的样子。(我已经使用真实 txt 文件中的选项卡分隔了行中的两个值)

California   5435
Ontario   2342
York   3456

最终输出必须如下所示:

id,name,city,code
12,Jimmy,Ontario,2342
33,Kimmel,York,3456

此 csv 具有更多数据,因此无法通过使用ReplaceText处理器来实现替换。所以它只能通过使用 ReplaceTextwithMapping处理器来完成。

我已按照此问题中用作答案的确切步骤进行操作。但似乎替换TextwithMapping没有按预期工作。由于新列已成功制作。但它只是包含城市列的相同内容,而不是我想要的代码。

如果您可以提交我可以遵循的答案以最终成功使用ReplaceTextwithMapping处理器获得所需的输出,我们将不胜感激

4

1 回答 1

3

我可以使用LookupRecord让它工作。整体流程如下所示:

在此处输入图像描述

生成流文件:

在此处输入图像描述

查找记录:

在此处输入图像描述

配置CSVReader并将CSVRecordSetWriter第一行视为标题行。对于其他属性保留默认值。配置CSVRecordLookupService

在此处输入图像描述

映射文件有以下内容:

city,code
Ontario,2342
California,5435

LookupRecord 处理器将获取城市值并从映射文件中查找正确的记录。它将提取代码并将字段添加到当前记录。结果:

在此处输入图像描述

如您所见,代码已添加到 CSV 文件中。但是它包含在一个对象中,尽管我选择了Insert Record Fields设置。我无法解决这个问题。这可能是另一个需要明确提出的问题。

于 2019-10-28T10:18:07.967 回答