2

クライアントがCSVファイルから毎日更新/挿入するシナリオがあります。CSVファイルは通常約30,000〜50,000行です。このCSVには、新しいインポートと既存の行を更新する機能の両方が含まれます。

PHP/MySQLを使用しています。

現在、CSVの各行をチェックして、データベースにあるものと比較する必要があります。

これは明らかに非常に長い時間がかかります。

データベースに何もない場合は、それ自体が高速な直接インポートを実行します。

一時テーブルと結合について考えましたが、更新と比較して、新しい行でどのように機能するかわかりませんでした。

4

1 に答える 1

0

csvデータをMySQLにインポートするためのオプションはいくつかあります。

  • mysqlimport-ここでは、--ignoreまたは--replaceオプションを使用できます。次のリファレンスマニュアル:

--replaceおよびオプションは--ignore、一意のキー値で既存の行を複製する入力行の処理を制御します。を指定する --replaceと、同じ一意のキー値を持つ既存の行が新しい行に置き換えられます。を指定する--ignoreと、一意のキー値で既存の行を複製する入力行はスキップされます。どちらのオプションも指定しないと、重複するキー値が見つかったときにエラーが発生し、残りのテキストファイルは無視されます。

  • 同様に、でLOAD DATA INFILE オプションを指定することもできますIGNOREREPLACE:を指定するREPLACEと、入力行が既存の行に置き換わり、IGNOREを指定すると、一意のキー値で既存の行を複製する入力行がスキップされます。

を使用している場合、MySQLデータベースが重複キーを処理する方法にもいくつかの違いがありますLOAD DATA INFILEIGNOREただし、これは、またはREPLACEオプションを使用しない状況にのみ適用されます。

于 2012-11-08T00:40:58.393 に答える