Java Talend:tmap合并两个CSV文件时出现空指针异常

Java Talend:tmap合并两个CSV文件时出现空指针异常,java,file,talend,Java,File,Talend,我想合并两个CSV文件。我面临的问题是两个CSV文件中有一个有动态列 e、 g 第一个CSV文件有两列。A和G。G列有逗号分隔的值 A | G |<-Column Names --|---------| A1| G1,G2,G3| <-Row A2| G2,G5,G6|<-Row 如下图所示,在这种情况下,仅从Tfileinputdelimited_2中提取一行。我猜该行是标题列,这就是nullpointer异常的原因。 为什么会这样?我将如何获得标题? 请告诉

我想合并两个CSV文件。我面临的问题是两个CSV文件中有一个有动态列

e、 g

第一个CSV文件有两列。A和G。G列有逗号分隔的值

A | G       |<-Column Names
--|---------|
A1| G1,G2,G3| <-Row
A2| G2,G5,G6|<-Row
如下图所示,在这种情况下,仅从Tfileinputdelimited_2中提取一行。我猜该行是标题列,这就是nullpointer异常的原因。

为什么会这样?我将如何获得标题? 请告诉我如何做到这一点。

读入文件,将“othercolumns”作为类型为Dynamic的1列。

在加入tMap之前,您需要从中提取A列:

然后注意在输出模式中只有一个动态类型,因为talend不能处理两个。

结果文件包括一个标题行和一个“othercolumns”列Z,如下所示:

A;G;C1;C2;Z
A1;G1,G2,G3;C1Value;C2Value;Z1
A2;G2,G5,G6;C1Value;C2Value;Z2

我认为您遇到了一个bug,因为您无法控制如何将头写入文件。我不能确定,因为我没有TIS/付费版的副本,所以我无法复制。您是否已尝试将表保存到测试数据库中?就为了看看发生了什么?无论如何,当使用动态模式时,模式定义中只能有一列(动态列)。但正如我所说,我无法测试:(有趣的是,我刚刚构建了一些东西,我意识到可以使用这个确切的功能,但是它对我来说工作得很好。你能检查一下动态列集中的所有列是否都有一个标题吗?否则我猜标题设置为null,然后将动态数据写入分隔文件的方法将被重新设置需要非空标题。所有列都有标题。当我将include header设置为true时,为什么tfileInputDelimited_2只获取一行?您能否在问题中编辑2个tfileInputDelimited组件配置的一些屏幕截图?
A |G          | C1    |C2       |Othercolumns|<-Column Names
--|-----------|-------|---------|------------|
A1| G1,G2,G3  |C1Value|C2Value  |            |<-Row
A2| G2,G5,G6  |C1Value| C2Value |            |<-Row
A |G          |       |         |            |
--|-----------|-------|---------|------------|
A1| G1,G2,G3  |C1Value|C2Value  |            |<-Row
A2| G2,G5,G6  |C1Value| C2Value |            |<-Row
java.lang.NullPointerException
at routines.system.DynamicUtils.writeHeaderToDelimitedFile(DynamicUtils.java:72)
at content.csvmergetest_0_1.CSVMergeTest.tFileInputDelimited_2Process(CSVMergeTest.java:2696)
at content.csvmergetest_0_1.CSVMergeTest.runJobInTOS(CSVMergeTest.java:3109)
at content.csvmergetest_0_1.CSVMergeTest.main(CSVMergeTest.java:2975)
A;G;C1;C2;Z
A1;G1,G2,G3;C1Value;C2Value;Z1
A2;G2,G5,G6;C1Value;C2Value;Z2