4

我面临以下问题:

我有两个输入:
1)我有一个包含 35 列及其正确标题的 csv 基本文件。
2) 我有各种不由我控制的给定文件,它们可能包含也可能不包含 35 列,更糟糕的是,它们可能出现故障。

我必须将第二个 csv 文件中的列与第一个 csv 文件中的列匹配。如果第二个 csv 文件没有全部 35 列,我应该按正确的顺序创建它们。

一旦我有一个适当的 csv 文件(一个标题看起来像第一个 csv 标题的文件),我会将它传递给一个脚本,该脚本管理通过列标题引用它们的数据。

一种可能的解决方案是在脚本中获取现有的字段输入,但是,我无法做到这一点,因为这些字段似乎是固定的,引用了第二个 csv 文件的现有列标题。因此,当我尝试访问不存在的列时,我最终会遇到异常......

任何帮助将不胜感激!

4

1 回答 1

1

这是一个示例数据扩展。

术语“第二个 csv 中的字段乱序”可能有多种含义

  1. 相同的 csv 文件来源,但字段的顺序不时不同
  2. csv文件中字段(列号)的位置在不同来源提供的文件中是不同的。

第一种情况真的很奇怪。相同的来源应该提供相同的数据,如果这不是真的,那么做出决定的逻辑可能真的很复杂。

第二种情况看起来更真实。在这种情况下,您可以将所有来源设为 35 个字段宽。然后你需要识别字段。在kettle中有很多工具可以检测数据类型、字符串操作、正则表达式等等。

实际上,听起来您需要自动检测字段。

但没有真实数据,很难看出规律。由于您在数据库级别实现了这种现场检测逻辑,因此在水壶中也是可能的。

无论如何,如果逻辑真的很复杂,那么使用 JavaStep,JavaScript。

于 2015-09-07T14:16:10.087 回答