mysqlのデータベースにテキストやCSVファイルからデータをインポートする時、サイズが小さければphpmyadminでブラウザ上から簡単にクリックだけでインポートできる。
ただし、サイズが大きくて100Mのファイルなどは無理。ちなみに今回はロリポップ!と、さくらインターネットのレンタルサーバー上で試した。
そこで直接クエリを発行してインポートさせようとしたけど、はまった・・・。LOAD DATA INFILEとmysqlimportを使う2つの方法があるらしいんだけど、
最初にLOAD DATA INFILE 構文を使ってみたけど、無理だった。
次に、mysqlimportを使っていろいろ試してたら上手く行った。
データはtxtでもcsvでも成功。データ自体は前もってサーバー上にアップしておく。
以下phpでやる方法。
$frogs = ‘mysqlimport –host=ホスト –user=ユーザー –password=パスワード –fields-terminated-by=”,” -L データベース名 ファイル名’;
system($frogs);
これをサーバー上にアップして動かせばOK。
最初に、ネット上に転がっていた説明通りにしたんだけど、いくらやっても上手くいかなくて、いろいろ総当りで試して成功。
気をつける点は以下。
ホスト、ユーザー、パスワード、データベース名の箇所はお決まりのmysqlへ接続する時に使うものを入れる。
–fields-terminated-by=”,”の部分はフィールドの区切りに使ってある記号を指定。
-Lはローカルの意味で、このファイル自体をftpでサーバーにアップして使うので、この場合はそのサーバー上のファイルということになる(この辺自信なし)。
ファイル名はフルパスで指定。
/home/users/なんとかかんとか/test.txt
レンタルサーバーならこんな感じになる。
ここで指定したファイル名(拡張子は関係ない)と同じ名前のテーブル名を探してそこへデータがインポートされるので、あらかじめ、テーブルをちゃんとカラムの数やデータ構造など揃えて同じ名前で作って用意しておく必要がある。
300Mくらいのデータをインポートしてみたけど、数秒でインポートが終わった。かなり早い。
このへん、最初の一回は面倒だけど、一度できれば後はいろいろ使い回しができるので楽ちん。
mysqlは、必要な時に必要な物だけ調べて使ってるんだけど、一番最初に買った基礎からのMySQL 改訂版 (西沢 夢路)は良書で、今だに時々見返すことがある。自分でサイト作るためにmysql使っている人ならこれ一冊あれば十分な気がする。たぶん下手に小難しい本に手を出したら挫折してただろうなと思う。