• ベストアンサー

PHP5+MySQL5 CSVから、更新、追加する処理の書き方

こんにちは。 PHP5とMySQL5を使っています。 CSVファイルを読み込み、キーが存在するレコードは更新、 存在しなければ追加、という処理について 色々な書き方を教えて頂けたらと思います。 例えば、フィールドは、ユニークキーとなる[ID]、 [Name]、[TEL]の3つとします。 1.CSV読む 2.行と列の2次元配列に格納 3.行数分ループ開始 3-1.IDをキーに、SELECT 3-2.存在したら 3-3.UPDATE更新 3-2.存在しなかったら 3-3.INSERT追加 4.行数分ループ終了 と考えています。 CSVに100行あったら、100回SELECT掛けることになりますが、 この書き方で問題ないでしょうか? もっと判り易い、こんな書き方も! というのがありましたら、是非頂けますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • racchoman
  • ベストアンサー率71% (20/28)
回答No.2

いくつか方法が考えられますが、MySQLの場合、一番簡単なのはREPLACE構文を使う方法だと思います。 http://dev.mysql.com/doc/refman/4.1/ja/replace.html 他にも、SELECTをしないで済む方法はあります。例えば、とりあえず無条件にINSERTしてみて重複エラーだったらUPDATEするとか、逆に無条件にUPDATEしてみてaffected_rows(UPDATEされた行数)が0だったらINSERTするとか。

noname#107872
質問者

お礼

ありがとうございます! >例えば、とりあえず無条件にINSERTしてみて >重複エラーだったらUPDATEするとか、 >逆に無条件にUPDATEしてみてaffected_rows(UPDATEされた行数)が >0だったらINSERTするとか。 これいいですね!! これにしよ!!! 勉強になりました!最高です!!!

その他の回答 (1)

  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

それでいいと思いますが他のやり方もご提案 1.新規テーブルを作成 2.CSVを読み込んで新規テーブルに全てINSERT 3.SELECT文で存在しているIDをアップデート 4.その他の行は全てINSERT 3.1で作成したテーブルを削除 こんなやりかもいかがでしょうか?

noname#107872
質問者

お礼

ありがとうございます! 勉強になります!!

関連するQ&A