定期的に大量のデータをCSVファイルからMySQLデータベースにアップロードする必要があります。私はこれを、bashスクリプトからLOAD DATA INFILEを実行するだけで使用しました。しかし、今では、データは複数のテーブルに分散され、リレーションシップは維持されます。そのような場合の一般的な戦略は何ですか?bashのMySQL関連テーブルの一括挿入
最初に簡単なタスクを考えてみましょう:関係の一対多、2つの表。私は何かを検討
:
- を手動でCSVに識別子を適用する表1
- のための最大のidentyfierを得るには、両方のテーブルを挿入する心の内の2つのターゲット表を使用してファイル
- を分割
- ファイル
最適なソリューションですか? (実際のケースでは、このように多くの多対多リレーションを更新する予定です)
プロセス全体の期間中、テーブル1をbashレベルからロックできますか?あるいは、私はperlやPythonのような中間的なツールを使って、すべてのものを1つのセッションに保つ必要がありますか?
優れた最初の投稿です! Kimballのデータウェアハウスツールキット(本)(http://www.amazon.com/The-Data-Warehouse-Toolkit-Dimensional/dp/)には、Immon(ite)かKimball(ite)か、Kimballのデータウェアハウスツールキット0471200247/ref = sr_1_1?s = books&ie = UTF8&qid = 1334075383&sr = 1-1)は、システムによって生成されるアーティファクトキーを残すと主張しています。または、私にとってうまくいった別のアプローチを試してみてください。独立した '入力'テーブルのセットを保持し、現在のファイルを空の入力テーブルにインポートし、メインテーブルにマージするストアドプロシージャを実行します。がんばろう。 – shellter
awkを使ってデータを前処理/分割し、分割されたファイルにデータをロードするだけです。詳細が必要な場合は、自分で提供する必要があります。 – Kevin