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に指定してやらなくてもそのままでいけた。