CSVデータをMySQLにインポートする
CSVのデータをMySQLにインポートしたので方法のメモ。
環境
- Vagrant : Scotchbox
- Ubuntu 14.04 LTS
- PHP 5.6
準備
MySQLにテーブルを作成する。 テーブルに作成した項目順にカンマ区切りで値を作成する。
エクセルでCSVファイルを作成した場合は、MySQLの文字コードをUTF-8としたので、テキストエディタなどでUTF-8に変更しておく
改行コードは、CRLF。
作成したCSVファイルは、vagrantの共有フォルダに保存しておく。
インポート
$ vagrant sshから、$ mysql -u rootでmysqlにログインし、以下のコマンドでインポートする。
インポートするファイルは、data.csvとする。
インポートするファイルはパスで指定するが、scotchboxの場合、共有フォルダの階層はvagrant内から見た場合は、/var/www/となるので、それを指定してやる。
1
| |
注意点
改行コード
インポートする際に使用する、DATA INFILEコマンドでは、デフォルトの改行コードはLFになっているよう。
なので、明示的に改行コードを指定してやる必要がある。
それが以下の部分。
1
| |
LOCAL INFILE
local infileを利用するには、設定で許可されている必要があるよう。
これが許可されていないと、以下のエラーが返ってくる。
The used command is not allowed with this MySQL version
デフォルトでは許可されていなかったので、mysqlへログインする際に許可してログインする。
1
| |
まとめ
ちょっとググっても色々と落とし穴があるようで、環境によってはその他の穴も空いてるかもしれない。 とりあえず、冒頭にあげた環境では上記でいけた。
ちなみに、ファイルはパーミッションを777に指定してやらなくてもそのままでいけた。