大量のデータを MYSQL データベースにバッチ挿入しようとしていますが、テーブルの列が受信データのサイズに対応するのに十分な大きさでない場合の対処方法についてアドバイスが必要です。
データ セットが非常に大きい (1Gb 以上) ため、入力データのメモリへのストリーミング読み取りを実行しています。特定の時点で、データを「フラッシュ」し、 jdbcTemplate.batchUpdate を使用してテーブルに挿入しようとします。宛先テーブルのすべての列は VARCHAR であり、サイズが 50 であると想定されています。これは、大部分のデータに対して完全に適切です。ただし、サイズ 15 を超えるデータが到着する場合があるため、INSERT は失敗します (列に対してデータが長すぎます)。
この問題に取り組むための最良のアプローチは何ですか? テーブルのすべての列をやみくもに大きくしたくありません。これは、あまりうまくスケールしない戦略のように思えるからです。また、サイズが大きいため、データを事前に解析しないことをお勧めします。失敗を待ってから、適切な「ALTER TABLE」を実行してデータを再送信する必要がありますか? 失敗したアイテムをキャッシュして、必要な列サイズを決定し、失敗したアイテムのみを再送信することは可能ですか?
これを実行する最適な方法についての指針と一般的なアドバイスを探しています。
ありがとう。