毎日午前5時19分にCSVを受け取ります。CSVの情報は、SQLデータベースのテーブルにデータを入力/更新するために使用されます。
私は3つのテーブルを持っています:
tempVehicle (temporary table, just for holding info),
vehicle (contains most info, main table),
and vehicleImages (table linked to vehicle by VIN).
新しいCSVに含まれていない情報をテーブルから削除し、CSVからテーブルに新しい情報を取得する必要があります。
私はそれをそのように設定しました:
合計7つのPHPファイルがあり、それぞれが上記の手順の1つに関連付けられています。これを行ったのは、特定の順序で実行する必要があり、その特定の順序を維持しながらマルチクエリを機能させる方法がわからなかったためです。
完璧なシナリオでは、1つのphpファイルで1つのマルチクエリを使用して設定することをお勧めします。私はこのファイルを毎日実行するためにcronジョブを使用することを計画しており、複数のcronジョブを実行する必要はありません。
したがって、可能であれば、私が回答したい質問は次のとおりです。
テーブルをより効率的に更新するためのより良い方法はありますか?
そうでない場合、すべてのクエリを1つのマルチクエリに結合することは可能ですか?
他に何か提案があれば、私はオープンです。
これは私がすることです
これにより、既存のテーブルが上書きされると同時に、一時テーブルが削除されます(名前が変更されているため)。
RENAME TABLE tempVehicle TO vehicle
RENAME TABLE tempVehicleImages TO vehicleImages
また、Alter Tableを使用して、名前を変更した後にインデックスを設定する必要がある場合があります。
私の補足/ペットピーブとして:キャメルケースはテーブルに名前を付けるための私の好ましい方法ではありません、私はVehicleとVehicle_imageを好みます。このように、ケーシングの複数化の問題はありません。
しかし、これは私が物事を行う方法です(しかし、それはあなたのDBです)。
通常のテーブル
ジャンクション(ブリッジ)テーブル(多対多の関係)
あなたが持っていたのであればvehicle
とimage
あなたはジャンクションテーブルを持つことができvehicles_images
、たとえば。そうすれば、複数のテーブルを見ると、それがジャンクションテーブル(2つ以上のテーブル名)であることがわかります。それ以外の場合は、そのVehicleImages、VehicleImages、VehiclesImages、VehiclesImage、またはその他の組み合わせかどうかを考える必要はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加