我有超过60列的csv。但是我只希望初始csv中只有32列。 (我的csv有标题)
我使用了QueryRecord
处理器,并添加了CSVReader
和CSVRecordSetWriter
。然后,我添加了一个名为done
的新属性,并将以下SQLstatement分配为该值。SELECT col1, col2, col9, col18, ..... col65 FROM FlowFile
上面的语句具有我要在输出csv中输出的32列的所有名称(这种情况下的col1,col2等是列的名称)。
由于我收到以下错误,因此失败。根据我的理解,这是由于超出了受支持列的限制。因为如果我想要7-8列,则此方法有效。
希望您能建议我一个处理器或nifi工作流程,我可以从65列中成功提取32列。
我尝试了15次,并且有效。因此,我尝试了16列,并且有效。所以我再次尝试了15次,但即使这样也不起作用。该错误似乎不一致。
最佳答案
您可以共享日志中的全部错误吗?实际原因将在您从公告/错误共享的文本之后。我不确定表名是否区分大小写,但我建议使用FLOWFILE
作为表名,以防万一。
另外,如果您提前知道输入模式,则可以使用ConvertRecord并将CSVRecordSetWriter的模式设置为类似于输入模式,但只包含所需的字段名称(列)。 ConvertRecord将不会输出在输出模式中不存在的字段,这具有删除这些字段并仅保留所需字段的作用。
如果您不了解架构,则QueryRecord应该可以工作(取决于您面临的错误)
关于java - Apache Nifi:从csv中删除多个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59134047/