CSV ファイルから大量のデータを定期的に MySQL データベースにアップロードする必要があります。以前は、bash スクリプトから LOAD DATA INFILE を実行するだけでこれを行っていました。ただし、データは複数のテーブルに分散され、関係は保持されます。そのような場合の一般的な戦略は何ですか?
最初は単純なタスクを想定しましょう: 1 対多の 2 つのテーブルの関係です。
私は次のようなものを考えます:
- テーブル 1 の最大識別子の取得
- CSV ファイルに識別子を手動で適用する
- 2 つのターゲット テーブルを念頭に置いてファイルを分割する
- 両方のテーブルを挿入する
それは最適解ですか?(たとえば、実際のケースでは、この方法で更新される多対多の関係がたくさんあります。)
プロセス全体の間、bash のレベルからテーブル 1 をロックできますか? それとも、perl や Python などの中間ツールを使用して、すべてを 1 つのセッションに保持する必要がありますか?