Chocotte de Choo

2009-09-08

[][][]「LOAD DATA INFILE」を実行する。 11:20 「LOAD DATA INFILE」を実行する。を含むブックマーク

  1. Windows環境で。
  2. PHPを使ってMySQLに。
  3. あるフォルダに入っているテキストファイルの中身をインポート

…という処理の実装です。


まず、テキストファイルの場所を指定するところから。

テキストファイルは、件のPHPプログラムのカレントディレクトリの、更に下のディレクトリにあるので、

PHP内でカレントディレクトリ絶対パスを取得してから、テキストファイルの場所を指定する」

という方針で。


カレントディレクトリの取得方法は、

  • getcwd()
  • realpath(".")

の二つあるのですが、今回は後者の方法で。

echo "dir===".realpath(".");

とすると、ブラウザには

dir===C:\VertrigoServ\www\master 

と表示されます(・∀・)

これと他の文字列をつなげて、

LOAD DATA  INFILE '".$dirRealMoss."/".$dataFile."' INTO TABLE moss_product FIELDS TERMINATED BY '¥t'

…というSQL文を作り実行させてみたのですが、結果が得られず(´・ω・`)

上のパスで、ディレクトリの区切り文字が「¥」となっていたので、SQLが走らなかったようです。


「¥」を「/」に置換する箇所を入れて、以下のようになりました。

$dirMoss = "data/";

$mossDataFiles = glob($dirMoss."*PRODUCT*.txt");

$dirRealMoss = realpath(".");

$dirRealMoss = str_replace("¥¥", "/", $dirRealMoss);

foreach($mossDataFiles as $dataFile){

  $sqlLoadMossMaster = 

  "LOAD DATA  INFILE '".$dirRealMoss."/".$dataFile."' INTO TABLE moss_product FIELDS TERMINATED BY '\t'";

  $result = mysql_query($sqlLoadMossMaster, $link) or die("result nothing!!");

}

トラックバック - http://d.hatena.ne.jp/Choo/20090908/1252635609