我是Apache Camel的新手。
我一直在编写使用BindyCsvformat
类处理csv文件的路由。到目前为止,我处理的CSV文件非常简单,因为它们具有固定数量的记录。
因此,使用@DataField
注释来定义列的位置不是问题。
但是,我遇到了一个CSV文件,其中列数是动态的。此CSV文件仅包含1行。
根据名为'句点数的列的值,列号是动态的。
如果期间的数量为'列是' 5',然后有5个额外的列添加到文件中。
以下是此特定CSV文件中标题的示例:
row_id, number_of_periods, result_period, result_period, result_period
0,3,0.00,10.00,10.00.
从上面的示例数据中可以看出,因为' number_of_periods'栏目显示' 3',有三个' result_period'列。 如果' number_of_periods'字段是5,然后会有5' result_period'列。
任何人都可以帮助(或指向任何引用)BindyCsvFormat
(通过Camel)可以处理此动态列映射吗?除非我弄错了,否则我认为@DataField
注释只能应用于固定字段(假设列的总数是预先知道的。
提前致谢。
答案 0 :(得分:0)
是的,对于固定字段,但是有一个选项可以让最后一个字段溢出,只需抓住该行的其余部分。
在您的用例中,您最好不要使用Bindy,只需编写自己的一些CSV解析器代码。自己也不难做到这一点。然后,您仍然可以在Apache Camel中使用CSV解析器,并使用解析器对每行进行消息转换。解析器只能作为java方法实现。