Embulk(embulk-parser-poi_excelプラグイン)で新しくxlsxファイルを読み込もうとしたら、例外が発生。
エラーメッセージがEOFExceptionでend of ZLIB input streamとのことだったので、最初はxlsxファイルが大きすぎたのかと思った。
で、別途Apache POIのサンプルを作ってそのxlsxファイルを読み込んでみたら例外が発生した。
inflate ratio(圧縮率?)のチェックに引っかかったらしい。
ただ、これをチェックする閾値は設定できるので、問題解決!
と思ったのだが、よく見るとエラーメッセージが全然違う(汗)
WorkbookFactory.createメソッドでxlsxファイルを読み込むのだが、引数がFileのメソッドとInputStreamのメソッドでは挙動が違うらしい…。
Embulkのxlsxファイルを読み込むプラグインではInputStreamを使う方式なのだが、ratioのエラーになるのはFileを使う方式だけで、InputStreamを使う方式だとエラーにならなかった。
Embulkでも、previewだとエラーになるが、同じファイルをrunで読み込むとエラーにならない。
ということは、EmbulkとPOIの相性の問題と思われる。
プレビューだから、ファイルの全データを読み込んでいないのではないかと思う。
しかしxlsxファイルはzip圧縮されている形式なので、先頭データだけでは解凍できない^^;
まぁプレビューだけの問題だから、注意喚起だけでいいかな~。
(追記)他のプラグインでも同様の問題が起きているらしい。previewだと32kBしか読まないそうで。
previewでも全データを読むように修正されるなら、この問題も解決しそう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます