MySQL CSVローダーの作成方法
システム構築時に、開発環境DBデータ(CREATE TABLEやCSVデータ)を本番環境に移す時、手動で実行するのではなく全て自動化すべきである。
ローダを使ってCREATE TABLE~CSVインポートを実行する手順。
1.sqlファイルを準備
ここでは「test.sql」とする。
中身には以下を記述。
DROP TABLE IF EXISTS tableA;
DROP TABLE IF EXISTS tableB;
DROP TABLE IF EXISTS tableC;CREATE TABLE tableA (
ID VARCHAR(10),
STAFFCODE VARCHAR(10),
STARTDATE date
) engine=InnoDB default charset=utf8;CREATE TABLE tableB (
ID VARCHAR(10),
STAFFCODE VARCHAR(10),
STARTDATE date
) engine=InnoDB default charset=utf8;CREATE TABLE tableC (
ID VARCHAR(10),
STAFFCODE VARCHAR(10),
STARTDATE date
) engine=InnoDB default charset=utf8;LOAD DATA INFILE "tableA.csv"
INTO TABLE tableA FIELDS TERMINATED BY ","
ENCLOSED BY '"'
LINES TERMINATED BY "\r\n";LOAD DATA INFILE "tableB.csv"
INTO TABLE tableA FIELDS TERMINATED BY ","
ENCLOSED BY '"'
LINES TERMINATED BY "\r\n";LOAD DATA INFILE "tableC.csv"
INTO TABLE tableA FIELDS TERMINATED BY ","
ENCLOSED BY '"'
LINES TERMINATED BY "\r\n";
2.sqlファイルを実行するためのバッチファイルを作成。
(-pの後の"test"はデータベース名)
@echo off
mysql -u root -p test < "C:\loader\test.sql"
pause
ちなみに準備するcsvファイルは「mysql\data\test(データベース名)」の中に配置しておく必要がある。
(パス指定も可能?)
実際にこのバッチを実行するとDBパスワードを聞いてくるので、パスワードを入力してEnter。
これでためしてテーブルの中身を確認。
日本語部分が文字化けしている場合、character_set_databaseを修正する。
MySQLのLOAD DATA INFILEでは、character_set_databaseシステム変数の文字セットを使うらしい。
(phpmyadminでの修正の場合は「操作」にて可能)
あわせて読みたい
MySQLでインデックスを作成する方法 - TechNoteこれまで結構DB使ってデータ検索とかいろいろしてきたけど、「パフォーマンスチューニング」とかいう言葉を見ても「?」という感じのまま使ってきた。なのでテーブル生成...
LOAD DATA INFILE使用時の文字化け - TechNote環境が変わったので移行時にこの方法で環境作成&データインポートをしたところ文字化けに遭遇。「LOAD DATA」の直前にSET NAMES UTF8;などと記述...
phpmyadminでLOAD DATA INFILE(カラム指定)の例 - TechNotemysqlモニタからのLOAD DATAのコマンドは下記。mysql> load data infile "c:\sample\KEN_ALL.csv" int...