• ベストアンサー

MySQL の load data infile

お世話になります。 MySQL のload data infile ... コマンドを使ってCSVファイルをテーブルに転送することをよくやっていますが、このコマンドには現在あるデータはそのままにして、新たにデータを追加するオプションなどはあるのでしょうか? 今までは空のテーブルにデータを転送していただけですが、既にあるデータに上書きすることなく、追加する方法があれば教えていただきたいと思います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watanabe04
  • ベストアンサー率18% (295/1598)
回答No.1

REPLACE および IGNORE キーワードは、一意のキー値に関して既存の行を複製する入力行の処理を制御します。 REPLACE を指定した場合は、入力行によって既存の行が置き換えられます。つまり、主キーまたは一意のインデックスに関して既存の行と同じ値を持つ行のことです。セクション13.2.8「REPLACE 構文」を参照してください。 IGNORE を指定した場合は、一意のキー値に関して既存の行を複製する行は破棄されます。 どちらのオプションも指定しない場合、その動作は LOCAL キーワードが指定されているかどうかによって異なります。LOCAL が指定されていない場合は、重複キー値が見つかるとエラーが発生し、テキストファイルの残りは無視されます。LOCAL が指定されている場合、デフォルトの動作は IGNORE が指定されている場合と同じです。 https://dev.mysql.com/doc/refman/5.6/ja/load-data.html

papashiroSooke
質問者

お礼

ご回答ありがとうございました。 お礼が遅れたことをお詫びいたします。 既にテーブルにあるメインキーとバッティングするキーを持つデータを load data しようとする時に REPLACE または IGNORE を指定するということですね。 メインキーは自動生成(auto increment)するID番号なので、これがバッティングすることはないと思いますが、この場合にはREPLACE も IGNORE も必要ないのでしょうか? ご確認いただけると有り難いです。

関連するQ&A