システム構築時に、開発環境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での修正の場合は「操作」にて可能)
- 作者: 鈴木啓修
- 出版社/メーカー: 技術評論社
- 発売日: 2004/11
- メディア: 単行本
- 購入: 2人 クリック: 135回
- この商品を含むブログ (23件) を見る
現場で使える MySQL (DB Magazine SELECTION)
- 作者: 松信嘉範
- 出版社/メーカー: 翔泳社
- 発売日: 2006/03/17
- メディア: 単行本
- 購入: 9人 クリック: 103回
- この商品を含むブログ (44件) を見る
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/12/14
- メディア: 大型本
- 購入: 17人 クリック: 373回
- この商品を含むブログ (46件) を見る