我有超过60列的csv。但是我只希望初始csv中只有32列。 (我的csv有标题)


我使用了QueryRecord处理器,并添加了CSVReaderCSVRecordSetWriter。然后,我添加了一个名为done的新属性,并将以下SQLstatement分配为该值。

SELECT col1, col2, col9, col18, ..... col65 FROM FlowFile

上面的语句具有我要在输出csv中输出的32列的所有名称(这种情况下的col1,col2等是列的名称)。

由于我收到以下错误,因此失败。根据我的理解,这是由于超出了受支持列的限制。因为如果我想要7-8列,则此方法有效。

java - Apache Nifi:从csv中删除多个列-LMLPHP

希望您能建议我一个处理器或nifi工作流程,我可以从65列中成功提取32列。

我尝试了15次,并且有效。因此,我尝试了16列,并且有效。所以我再次尝试了15次,但即使这样也不起作用。该错误似乎不一致。

最佳答案

您可以共享日志中的全部错误吗?实际原因将在您从公告/错误共享的文本之后。我不确定表名是否区分大小写,但我建议使用FLOWFILE作为表名,以防万一。

另外,如果您提前知道输入模式,则可以使用ConvertRecord并将CSVRecordSetWriter的模式设置为类似于输入模式,但只包含所需的字段名称(列)。 ConvertRecord将不会输出在输出模式中不存在的字段,这具有删除这些字段并仅保留所需字段的作用。

如果您不了解架构,则QueryRecord应该可以工作(取决于您面临的错误)

关于java - Apache Nifi:从csv中删除多个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59134047/

10-11 00:15