巨大な 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")