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

あきら [E-MAIL ADDRESS DELETED]
2008年 11月 26日 (水) 15:07:28 JST


あきらです

s2jdbc-gen-0.9.3.jar を利用していますが、特定のCSVデータの場合
migradeが失敗する事例が発生しております。

エラーは

\040-dump\sm_address.csv)の 743 行目の列数(24)がヘッダ行の列数(25)と異なっています。

と出ておりますが、その行にはおそらく問題ないように思えます

上の方の行で可変長文字列の部分を1文字減らしたり増やしたりすると通るので
リーダー部分のキャッシュサイズなどの影響で、分離されてはいけない場所で
分離して処理をしてしまったのかなと推測します

対象のCSVファイルのサイズは160 KB (164,463 バイト)になります。

H2で検証できるプロジェクトが手元にありますが、MLには
流せないデータになりますので、必要であれば直接送付させて
いただきたいと思います。

以上簡単ですが、よろしくお願いいたします。

エラー全文
==========================================================
BUILD FAILED
workspace\loadtest\s2jdbc-gen-build.xml:142: Exception in thread
"main" org.seasar.extension.jdbc.gen.exception.CommandFailedRuntimeException:
[ES2JDBCGen0005]コマンド(org.seasar.extension.jdbc.gen.internal.command.MigrateCommand)の実行に失敗しました。理由はorg.seasar.extension.jdbc.gen.exception.LoadFailedRuntimeException:
[ES2JDBCGen0015]ダンプファイル(workspace\loadtest\db\migrate\0001\create\040-dump\sm_address.csv)の743行目のデータのロードに失敗しました。理由はorg.seasar.extension.jdbc.gen.internal.exception.IllegalDumpColumnSizeRuntimeException:
[ES2JDBCGen0012]ダンプファイル(workspace\loadtest\db\migrate\0001\create\040-dump\sm_address.csv)の
743 行目の列数(24)がヘッダ行の列数(25)と異なっています。
	at org.seasar.extension.jdbc.gen.internal.command.AbstractCommand.execute(AbstractCommand.java:160)
	at org.seasar.extension.jdbc.gen.internal.command.CommandInvokerImpl.invoke(CommandInvokerImpl.java:29)
	at org.seasar.extension.jdbc.gen.command.CommandAdapter.main(CommandAdapter.java:61)
Caused by: org.seasar.extension.jdbc.gen.exception.LoadFailedRuntimeException:
[ES2JDBCGen0015]ダンプファイル(workspace\loadtest\db\migrate\0001\create\040-dump\sm_address.csv)の743行目のデータのロードに失敗しました。理由はorg.seasar.extension.jdbc.gen.internal.exception.IllegalDumpColumnSizeRuntimeException:
[ES2JDBCGen0012]ダンプファイル(workspace\loadtest\db\migrate\0001\create\040-dump\sm_address.csv)の
743 行目の列数(24)がヘッダ行の列数(25)と異なっています。
	at org.seasar.extension.jdbc.gen.internal.data.LoaderImpl.load(LoaderImpl.java:115)
	at org.seasar.extension.jdbc.gen.internal.command.MigrateCommand$1.create(MigrateCommand.java:581)
	at org.seasar.extension.jdbc.gen.internal.version.MigraterImpl$1.execute(MigraterImpl.java:133)
	at org.seasar.extension.jdbc.gen.internal.sql.SqlUnitExecutorImpl.executeInternal(SqlUnitExecutorImpl.java:92)
	at org.seasar.extension.jdbc.gen.internal.sql.SqlUnitExecutorImpl.execute(SqlUnitExecutorImpl.java:71)
	at org.seasar.extension.jdbc.gen.internal.version.MigraterImpl.migrateInternal(MigraterImpl.java:125)
	at org.seasar.extension.jdbc.gen.internal.version.MigraterImpl.migrate(MigraterImpl.java:99)
	at org.seasar.extension.jdbc.gen.internal.command.MigrateCommand.doExecute(MigrateCommand.java:561)
	at org.seasar.extension.jdbc.gen.internal.command.AbstractCommand.execute(AbstractCommand.java:158)
	... 2 more
Caused by: org.seasar.extension.jdbc.gen.internal.exception.IllegalDumpColumnSizeRuntimeException:
[ES2JDBCGen0012]ダンプファイル(workspace\loadtest\db\migrate\0001\create\040-dump\sm_address.csv)の
743 行目の列数(24)がヘッダ行の列数(25)と異なっています。
	at org.seasar.extension.jdbc.gen.internal.data.DumpFileReader.readLine(DumpFileReader.java:116)
	at org.seasar.extension.jdbc.gen.internal.data.LoaderImpl.loadData(LoaderImpl.java:172)
	at org.seasar.extension.jdbc.gen.internal.data.LoaderImpl.load(LoaderImpl.java:107)
	... 10 more

あきら


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