Parsing Talend-合并分隔文件的两行以获得一个寄存器

Parsing Talend-合并分隔文件的两行以获得一个寄存器,parsing,rows,talend,delimited-text,Parsing,Rows,Talend,Delimited Text,我正在解析分隔文件以获取将放入数据库表中的信息 现在,我有一个文件,其中我必须合并每两行,以获取关于一个寄存器(数据库表的一行)的信息-第1行有一些来自数据库行的字段,第2行有一些其他字段放在同一行中 如何一次处理两行 例如,假设我有一个包含6行的文件,它对应于我的数据库表中的3个条目,其中有9列。从“奇数行”我得到了第1、3、4、5、8和9列。从“偶数行”中,我得到剩余的信息(第2、6和7列): 您可以尝试将文件拆分为两种类型的行,然后使用tMap将它们连接起来 为了进一步澄清,您需要根据文件

我正在解析分隔文件以获取将放入数据库表中的信息

现在,我有一个文件,其中我必须合并每两行,以获取关于一个寄存器(数据库表的一行)的信息-第1行有一些来自数据库行的字段,第2行有一些其他字段放在同一行中

如何一次处理两行

例如,假设我有一个包含6行的文件,它对应于我的数据库表中的3个条目,其中有9列。从“奇数行”我得到了第1、3、4、5、8和9列。从“偶数行”中,我得到剩余的信息(第2、6和7列):


您可以尝试将文件拆分为两种类型的行,然后使用tMap将它们连接起来

为了进一步澄清,您需要根据文件是IN还是OUT来拆分文件,然后根据需要使用tMap来连接列

我对您的示例数据进行了一些修改,使其看起来有点像:

|=---+-----------+-----------+-----------+-----------+-----------+-----------+-----------+----------=|
|IN1 |ROW1COLUMN1|xxxxxxx    |ROW1COLUMN3|ROW1COLUMN4|ROW1COLUMN5|xxxxxxx    |xxxxxxx    |ROW1COLUMN8|
|OUT1|xxxxxxx    |ROW1COLUMN2|xxxxxxx    |xxxxxxx    |xxxxxxx    |ROW1COLUMN6|ROW1COLUMN7|xxxxxxx    |
|IN2 |ROW2COLUMN1|xxxxxxx    |ROW2COLUMN3|ROW2COLUMN4|ROW2COLUMN5|xxxxxxx    |xxxxxxx    |ROW2COLUMN8|
|OUT2|xxxxxxx    |ROW2COLUMN2|xxxxxxx    |xxxxxxx    |xxxxxxx    |ROW2COLUMN6|ROW2COLUMN7|xxxxxxx    |
|IN3 |ROW3COLUMN1|xxxxxxx    |ROW3COLUMN3|ROW3COLUMN4|ROW3COLUMN5|xxxxxxx    |xxxxxxx    |ROW3COLUMN8|
|OUT3|xxxxxxx    |ROW3COLUMN2|xxxxxxx    |xxxxxxx    |xxxxxxx    |ROW3COLUMN6|ROW3COLUMN7|xxxxxxx    |
'----+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------'
唯一真正的补充是,现在有一个键,它应该如何连接到第一列的IN或OUT旁边

首先,您需要使用tMap设置将数据拆分为输入和输出部分,如下所示:

这只是根据Id字段是以“IN”还是“Out”开头,沿两条路径之一发送数据

在此之后,您将希望将其与另一个tMap重新组合,如:

这将基于从Id文件提取的键进行连接,并在组合输出中使用适当的列

不幸的是,您不能用一个tMap拆分一个流,然后直接将其重新连接到另一个tMap,因此最好的办法是将其输出到两个单独的位置(数据库表或临时CSV文件),然后在该子对象完成后,在这些单独的位置读取并与第二个tMap重新组合

示例作业可能如下所示:


如果您没有可加入的自然键,则可以通过获取第一个tMap的输出,然后添加一列,其中的表达式为列的值来生成一个自然键。

但是我是否必须保存这两种文件?我已编辑了答案,以演示如何执行此操作。这需要根据您的实际数据进行调整,但应该会让您很好地了解需要做什么。非常感谢您的解释。真管用!
|=---+-----------+-----------+-----------+-----------+-----------+-----------+-----------+----------=|
|IN1 |ROW1COLUMN1|xxxxxxx    |ROW1COLUMN3|ROW1COLUMN4|ROW1COLUMN5|xxxxxxx    |xxxxxxx    |ROW1COLUMN8|
|OUT1|xxxxxxx    |ROW1COLUMN2|xxxxxxx    |xxxxxxx    |xxxxxxx    |ROW1COLUMN6|ROW1COLUMN7|xxxxxxx    |
|IN2 |ROW2COLUMN1|xxxxxxx    |ROW2COLUMN3|ROW2COLUMN4|ROW2COLUMN5|xxxxxxx    |xxxxxxx    |ROW2COLUMN8|
|OUT2|xxxxxxx    |ROW2COLUMN2|xxxxxxx    |xxxxxxx    |xxxxxxx    |ROW2COLUMN6|ROW2COLUMN7|xxxxxxx    |
|IN3 |ROW3COLUMN1|xxxxxxx    |ROW3COLUMN3|ROW3COLUMN4|ROW3COLUMN5|xxxxxxx    |xxxxxxx    |ROW3COLUMN8|
|OUT3|xxxxxxx    |ROW3COLUMN2|xxxxxxx    |xxxxxxx    |xxxxxxx    |ROW3COLUMN6|ROW3COLUMN7|xxxxxxx    |
'----+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------'