概要
ローカルでつくったCSVファイルをさくらレンタルサーバにアップロードしてテーブルに読み込む手順。
- CSVファイルを準備する
- CSVファイルをアップロードする
- MySQLにログオン(ファイルを読めるようにするオプションが必要)
- ファイルをテーブルに読み込む。
CSVファイルの準備
- 表計算ソフトでCSVファイルを作成して保存
- Excelの場合は文字コードにUTF-8を指定できないので、エディタで読み込んで文字コードと改行コードを指定して保存
- 文字コードはUTF-8
- 改行コードはLF
CSVファイルのアップロード
さくらレンタルサーバの場合、ファイルのアップロード先は~/www/
のディレクトリ下。フルパスだと、/home/USERNAME/www
。
必要に応じてファイルの場所を移動。
MySQLへのログイン
MySQLがローカルファイルから読み込めるよう、--enable-local-infile
オプションをつけてログイン。
1 |
mysql -u [ユーザ名] -h mysql???.db.sakura.ne.jp -p --enable-local-infile |
ファイルの読み込み
- コマンドは
LOAD DATA INFILE
コマンド - サーバにアップロードしたファイルをローカルで読み込むので”
LOAD DATA LOCAL INFILE ...
“とする - コマンドが長いので、エディタなどで複数行に打ち込んで、コンソールへコピー・ペースト
1 2 3 |
LOAD DATA LOCAL INFILE "home/USERNAME/.../[csvファイル名]" INTO TABLE [テーブル名] FIELDS TERMINATED BY ','; |
改行がCR+LF
の場合、LINES TERMINATED BY "\r\n"
を付加する。
実行例
以下のようなテストファイルを用意してアップロードしておく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
% cat test.csv 100,abc 200,def 300,ghi % mysql -u ???????? -h mysql???.db.sakura.ne.jp -p --enable-local-infile Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. ..... mysql> use ????????_main; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +---------------------------+ | Tables_in_taustation_main | +---------------------------+ | test | +---------------------------+ 2 rows in set (0.00 sec) mysql> desc test; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | code | char(5) | YES | | NULL | | | name | char(10) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> load data local infile "/home/????????/test.csv" -> into table test -> fields terminated by ','; Query OK, 3 rows affected (0.00 sec) Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 mysql> select * from test; +------+------+ | code | name | +------+------+ | 100 | abc | | 200 | def | | 300 | ghi | +------+------+ 3 rows in set (0.00 sec) mysql> |