• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Load Data INFILE構文について)

Load Data INFILE構文について

このQ&Aのポイント
  • Load Data INFILE構文を使用して、既存のテーブルにCSVをインポートし、特定のレコードのみをUPDATEする方法についての質問です。
  • 既存のテーブルにデータが入っている状態で、別のCSVデータをインポートし、既存のレコードの一部のカラムを更新したい場合、どのようにすれば良いかについて質問です。
  • 100万件のデータがあり、既存のデータの一部を更新し、データが存在しない場合にはインサートしない方法について質問です。

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

基本的にLOAD DATA INFILE は、insertまたは、replaceを行うためのものです。 直に、該当tableへloadするのではなく、temporary table へloadして、2つのtableを見比べつつupdateならできるかとおもう。  以下、mysql4.1以降で、サブクエリ利用すれば、3行でやれそう CREATE TEMPORARY TABLE temp LIKE old_tbl_name; /* mysql4.1 以降の場合 likeで定義借用 */ LOAD DATA INFILE 'file_name.txt' INTO TABLE temp; /* 改行コードなど適宜指定 */ UPDATE old_tbl_name SET `属性`= (SELECT `属性` FROM temp WHERE temp.ID = old_tbl_name.ID) WHERE `属性` IS NULL OR `属性`=''; 未検証なので、手直しがいるかも。

すると、全ての回答が全文表示されます。

関連するQ&A