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。

f:id:kojikoji75:20121230161915p:plain

これでためしてテーブルの中身を確認。
日本語部分が文字化けしている場合、character_set_databaseを修正する。

MySQLのLOAD DATA INFILEでは、character_set_databaseシステム変数の文字セットを使うらしい。
(phpmyadminでの修正の場合は「操作」にて可能)

f:id:kojikoji75:20121230161934p:plain

MySQL全機能リファレンス

MySQL全機能リファレンス

現場で使える MySQL (DB Magazine SELECTION)

現場で使える MySQL (DB Magazine SELECTION)

実践ハイパフォーマンスMySQL 第2版

実践ハイパフォーマンスMySQL 第2版

  • 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/12/14
  • メディア: 大型本
  • 購入: 17人 クリック: 373回
  • この商品を含むブログ (46件) を見る
タイトルとURLをコピーしました