我有一个超过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次,但即使这样也不起作用。该错误似乎不一致。
答案 0 :(得分:1)
您可以共享日志中的全部错误吗?实际原因将在您从公告/错误共享的文本之后。我不确定表名是否区分大小写,但我建议使用FLOWFILE
作为表名,以防万一。
此外,如果您提前知道输入模式,则可以使用ConvertRecord并将CSVRecordSetWriter的模式设置为类似于输入模式,但只包含所需的字段名称(列)。 ConvertRecord将不会输出在输出模式中不存在的字段,这具有删除这些字段并仅保留所需字段的作用。
如果您不了解架构,则QueryRecord应该可以工作(取决于您面临的错误)