0

これは、csv ファイルを使用して mysql テーブルをロードするための私のクエリです。

LOAD DATA LOCAL INFILE table.csv REPLACE INTO TABLE table1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY 'XXX' IGNORE 1 LINES 

SET date_modified = CURRENT_TIMESTAMP;

私の CSV に 15 列の 500 レコードが含まれているとします。3 つの行を変更し、「XXX」で終了しました。このファイルで mysql テーブルを更新したいと思います。私の主キーは自動インクリメント値です。このクエリを実行すると、500 行すべてが古いデータで更新され、変更した行が新しいデータとして追加されます。新しいものは欲しくない。テーブルをそのまま csv に置き換えたい。主キーを非 AI に変更しようとしましたが、それでも機能しませんでした。何かポインタをください?? ありがとう。

4

1 に答える 1

0

私はここでいくつかの仮定をしています。

1)ファイルに自動番号の値がありません。

主キーがファイルにないため、MySQLは行を照合できません。自動番号の主キーは人工的なキーであるため、データの一部ではありません。MySQLは、行が挿入されるときにこの人工主キーを追加します。

ファイルに一意の識別子が含まれていると仮定して、Identification_Numberと呼びましょう。この番号はファイル内にあり、テーブルはそれを主キーとして使用します。この場合、MySQLはファイルから行を識別し、それらをテーブル内の行と照合することができます。

多くの人はデータベースで自動番号のみを使用しますが、私は常にデータに自然キーがないかどうかを確認します。1つを特定した場合は、テーブル内のこの自然キーを使用してパフォーマンステストを行います。次に、両方のパフォーマンスメトリックに基づいて、キーを決定します。

うまくいけば、私はあなたの質問を間違えなかったでしょうが、私はこれが事実かもしれないと思います。

于 2012-06-02T06:07:33.250 に答える