先日、600MBほどの、かなり大きなCSVファイルのデータを、レンタルサーバーのMySQLに読み込ませる作業を行いました。
小規模のデータなら、phpMyAdminを利用すれば、簡単にアップロードできるのですが、今回の規模のデータだと、余裕でタイムアウトしてしまいます。
SSHで接続して、mysqlコマンドで読み込ませたら、数十秒で終わってしまいました。
CSVファイルの中身は商品データ。500万ほどのレコードがあります。
phpMyAdminで読み込めるのはせいぜい数十MBまで。SSHでサーバーに接続して、mysqlコマンドで試すことに。
まず最初に、読み込ませたいCSVファイルを、ファイル転送アプリでサーバーにアップロードしておきます。
そうしたら、SSH接続を。CORESERVERの場合は、管理画面から事前にセットしておく必要があります。
詳しいページを参考に。
私はMacなので、ターミナルでログインしてしまいます。WindowsならTeraTermあたりかな。
1 |
ssh -l [ユーザーネーム] b00(サーバー番号).coreserver.jp |
でSSH接続
1 |
mysql -u [データベース名] -p |
でDB接続
1 2 3 4 |
LOAD DATA LOCAL INFILE "/virtual/[ユーザーネーム]/public_html/file.csv" INTO TABLE [テーブル名] FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; |
mysqlコマンドでCSVファイルを流し込みます。
サーバー上で直接MySQLを操作すれば、20秒くらいで終了しました。速い!
phpMyAdminだとネット転送しながらですし、ウェブを通してDBを操作するので、遅いんでしょうね。
大量データーを、レンタルサーバーで取り扱いしたいときに、参考にしてください。
コメント