というか、そもそも ReplaceSchema で TSV や CSV のデータを登録できると思っていなかった人も多いのでは!? 仕方ありません。そもそも全面に売り出してなかった機能です。 別に今でも「基本はエクセルデータ」に変わりはありません。 ReplaceSchema - データ登録(TSV) | DBFlute (以下、TSV と言ったら CSV も含みます) で、そういう扱いだったので、TSV のデータ登録は、 ちょっとだけ「おいてけぼり」をくらっていました。 誰においてけぼりをくらったか!?...jflute です。 エクセルデータの方は随分前からバッチ更新を使って、 パフォーマンス向上に努めていたのですが、TSV の方は 放置状態で都度都度 insert のままでした。 そもそも TSV の存在理由の一つに: 「エクセルで扱えない大量データを登録」 というのがあるのだから、よりバッチ更新を使いたい場面 だよね、っていうところ。ようやく対応しました。 次のバージョン「DBFlute-0.9.7.5」にて反映します。 既に RC1 が出ております。(DBFlute.NET も同様) 昨日、seasar-user-MLで話題になった課題の件に関連して、 30万件のレコードを ReplaceSchema で登録しました。 そのときに「うーん、さすがにバッチ更新にしないとなぁ」と。
バッチ更新にすると、一つ別の問題が発生します。 JDBCの例外メッセージの「優しさ度」次第では、どのレコードが 登録エラーになったのかがわからないことがたびたび。 そういうときは一度バッチ更新を止め、都度 insert 形式 にして実行すると、エラーになったレコードで処理が中断します。 これは、エクセルデータの登録と全く同じ仕様です。 ReplaceSchema - バッチ更新をしないで登録 | DBFlute
エクセルデータと仕様の違いが幾つかあります。 メインのエクセル、サブのTSV、という扱い、 そして、手動作成のエクセル、どこかからの自動出力のTSV、 という場面を想定していることにより、仕様も多少の違いが。 (無論、必ずしもそうじゃないことの想定もありますが) ReplaceSchema - TSVファイルのデータ仕様 | DBFlute ちょっと特徴的なのが: 「テーブルに存在しないカラム定義は無視される」 というところ。 スペルミスなどを考えると厳密にチェックされた方が うれしいとは思うところですが、こういったポイントが: TSV はシステム間でのデータのやり取りに向いているため、 手動で作成するというよりかは、プログラム経由で出力する ことが多く、スペルミスチェックのニーズは比較的低いかと。 また、TSVデータを外部システムからもらうことが想定され、 そういうときに不要なカラムが含まれることもしばしば。 TSV はデータ編集しづらい形式なので、できればそのまま 不要なカラムは無視して ReplaceSchema で登録、っと。 「そんなこと滅多にないようぅ」と思われるかも知れませんが、 確かにその通りです。ただ、ReplaceSchema が誕生した プロジェクトにて、まさにその要件がありました。 お客様からテストデータをもらえるのですが、さっきのような 感じ。そして、手修正追いつかない大量のテーブル、というか 他にも作業がひっきりなし。そういった状況で、 ReplaceSchema の TSV 登録が産声をあげました。 (三年半...いや四年近く前ですかね) という経緯があり、今に至っています。 本来はどっちの仕様が良いか、というのは一旦置いておいて、 「思い出の仕様」ということでご容赦下さい... @DBFlute, Java, DBFlute.NET, C#, ReplaceSchema