アップロードしたCSVファイルをMySQLにphpでインポートさせる | 王様の耳はロバの耳

王様の耳はロバの耳

ゆがんだかがくしゃのたのしいにっきだよ

ちょっとしたPHPプログラムを書いているのだが、
AccessのMDBをMySQLに移行させるための処理。
こういうのって結構需要ありそうなんだけど、あまりない。

MDBのフォーマットからPHP(Windows)のADOを使って、
自動的にMySQLのCREATE文を作るのは既に成功。

MDBからデータ書きだしをして、最終的にMySQLで扱いたいのだけど、
phpMyAdminなども駆使してみると、やはりAccessからマクロを使ってCSVファイ
ルを書き出すのが、行数制限も文字コード(eucのみ)の問題も解決できて嬉しい。
ただしphpMyAdminは使えないので、phpでアップロードしてMySQLのインポート用
テーブルに読み込ませたい。

こういう事を考えている人が他にもいた。

[参考]PHPからMYSQLへデータをインポートする
http://webtech.seesaa.net/article/106290358.html
このサイトは結局うまくいっていないのですが、
やってみたらできましたよ!

(上記続きのサイトにあるコードをもとに)
---
echo $csvname . "としてアップロードしました。<br>MySQLに取り込みます。<br>";
$filepath= str_replace("\\","/", realpath( "." )."/csv/".$csvname );

$sql="LOAD DATA LOCAL INFILE '".$filepath."' INTO TABLE MDB_IMPORT
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n';";
$result = mysql_query($sql);
----
というあたりがみそ。
system関数ではエラーが見づらいので、MySQLのQueryで実行しました。

まあ他にも使う人いるかもと思いメモ。