0

巨大な XML ファイルを読み取り、ヘッダー付きの CSV ファイルを書き込むルートがあります。最初に XML レコードを変換する必要があるため、それを Java POJO にマップしてから、再度マーシャリングして csv ファイルに書き込みます。

ファイルには 20 万件以上のレコードが含まれているため、すべてのレコードをメモリにロードすることはできません。

問題: CSV ファイルに追加された最後のレコードしか表示されません。既存のファイルにデータを追加しない理由がわかりません。

それを機能させる方法についてのアイデア。ヘッダーは CSV で必要です。最初に Pojo にアンマーシャリングせずにストリームを直接変換し、ヘッダーを CSV に書き込む他のオプションは見当たりません。BeanIO も使用してみましたが、ヘッダー レコードを追加する必要があり、それをストリームに挿入する方法がわかりません。

   from("{{xml.files.route}}")

            .split(body().tokenizeXML("EMPLOYEE", null))
            .streaming()
            .unmarshal().jacksonXml(Employee.class)

            .marshal(bindyDataFormat)

            .to("file://C:/Files/Test/emp/csv/?fileName=test.csv")

            .end();

既存のファイルに追加しようとすると、CSV ファイルはレコードの各反復にヘッダーを追加します。

 .to("file://C:/Files/Test/emp/csv/?fileName=test.csv&fileExist=append")
4

1 に答える 1