アップロードするマシン上でCSVを(事前に決められた形式で)選択できるクライアントのアップローダー(phpを使用)を設定しています。 CSVはおそらく4000〜5000の行を持ちます。 phpは、CSVの各行を読み込んでDBテーブルに直接挿入することでファイルを処理します。その部分は簡単です。MySQLに重ね書き/追加バッチ書き込みを混在させることはできますか?
ただし、理想的には、このデータをデータベーステーブルに追加する前に、3つの列(A、B、C)を確認し、これら3つのフィールドの一致するコンボが既にあるかどうかを確認します私はむしろ追加するよりむしろその行を更新したいと思います。これらの3つの列の一致するコンボがない場合は、行を挿入してデータをテーブルに追加します。
私の最初の考えは、列A、B、Cをテーブル内のユニークなインデックスにしてから、すべての行をINSERTし、INSERT(独自のインデックスの制約のため)を検出して、更新を行います。このメソッドは、テーブル内に既に一致するコンボがあるかどうかを確認するために、各行に対して個別のSELECTクエリを作成する必要がある場合よりも効率的であると考えられます。
3つ目のアプローチは、MySQLユニークインデックスを使用せずに単にEVERYTHINGを追加し、クライアントが後でそのテーブルをクエリするときに最新の一意のコンボだけを取得することです。しかし、私はそのテーブルに大量の無駄なデータがあるのを避けようとしています。
ベストプラクティスまたは賢明なアプローチについての考え方はありますか?
非常に便利なテクニック。 – phirschybar
うれしい私は助けることができます。これは私が拾った便利なトリックです。 –