[Seasar-user:16399] Re: [S2JDBC-Gen] migradeのCSVロードで失敗することがある

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 11月 26日 (水) 23:30:40 JST


中村(taedium)です。

> > s2jdbc-gen-0.9.3.jar を利用していますが、特定のCSVデータの場合
> > migradeが失敗する事例が発生しております。
> > 
> > エラーは
> > 
> > \040-dump\sm_address.csv)の 743 行目の列数(24)がヘッダ行の列数(25)と異なっています。
> > 
> > と出ておりますが、その行にはおそらく問題ないように思えます
> > 
> > 上の方の行で可変長文字列の部分を1文字減らしたり増やしたりすると通るので
> > リーダー部分のキャッシュサイズなどの影響で、分離されてはいけない場所で
> > 分離して処理をしてしまったのかなと推測します

再現環境の提供ありがとうございました。

CSVを一定のバッファ単位で処理しているのですが、
バッファの最後の2バイトがカンマと改行コード(CR)になる場合に
この問題が発生していました。

trunkでは修正しました。

s2jdbc-gen-0.9.3でこの問題に対処するには、
お手数ですが、修正版のDumpFileTokenizerクラスを使ってください。

# jarファイルに含まれるものよりも
# 優先して使用されるようにしてください。

Javaファイルを添付します。


回避策としては、もう1つあって、
カンマで終わる行にならないように
調整してもらっても大丈夫です。
-- 
Toshihiro Nakamura
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DumpFileTokenizer.java
Type: application/octet-stream
Size: 7642 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20081126/13c7f1d7/attachment-0001.obj>


Seasar-user メーリングリストの案内