- ベストアンサー
LOAD DATA INFILEの使用について
- LOAD DATA INFILEを使用したデータベースへのCSVファイルの登録に関するエラーについて調査しました。
- 一般ユーザーではLOAD DATA INFILEを使用することはできないため、代替手段が必要です。
- レンタルサーバーを使用している場合、LOAD DATA INFILEを使用することは制限されています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> これはどのように作るのでしょうか? 私が作るならこんな感じ。 <?php $dsn = 'mysql:dbname=mydata;host=localhost'; $user = 'user'; $password = 'password'; if (($fp = fopen("data.csv", "r")) !== FALSE) { $dbh = new PDO($dsn, $user, $password); $stmt1 = $dbh->prepare("INSERT INTO mydata (column1,column2,column3) VALUES (:DATA1,:DATA2,:DATA3)"); while (($data = fgetcsv($fp)) !== FALSE) { $stmt1->bindValue(':DATA1', $data[0]); $stmt1->bindValue(':DATA2', $data[1]); $stmt1->bindValue(':DATA3', $data[2]); $stmt1->execute(); } fclose($fp); unset($dbh); } ?> PHPのいいところは公式サイトのリファレンスが充実していることです。 頑張って意味は調べてみてください。 http://www.php.net/manual/ja/function.fopen.php http://www.php.net/manual/ja/function.fgetcsv.php http://www.php.net/manual/ja/book.pdo.php
その他の回答 (2)
- t_ohta
- ベストアンサー率38% (5238/13705)
> 一点わからないのですが、$stmt1 というのは何かの略なんでしょうか? PDOStatementのインスタンスを入れているので、ステートメントの1個目という意味で使ってます。 複数のSQL文を同じループの中で使う時1個目、2個目と定義しておいて使い分ける事があるので、私はそんな感じで変数名を付けてます。
お礼
ご親切にありがとうございます! なるほど!ステートメントの一つ目という意味なんですね。 大変勉強になりました。
- t_ohta
- ベストアンサー率38% (5238/13705)
PHPを使っているので有れば、PHPでCSVファイルを開いてMySQLにINSERTするプログラムを作ればいいだけでは。
補足
回答どうもありがとうございます。 初心者なのですが、 >PHPでCSVファイルを開いてMySQLにINSERTするプログラムを作ればいいだけでは。 これはどのように作るのでしょうか?
お礼
コードまで書いて頂きありがとうございました。 頂いたコードを流用して無事にアップロードすることが出来ました。 PDOというのは初めて知りましたが、今後も勉強して使っていきたいと思います。 また、参考サイトも大変ためになりました。 一点わからないのですが、$stmt1 というのは何かの略なんでしょうか?