データベースをMySQLに移行する時に、ゼロからデータを入力していてはもったいないです。MySQLにはファイルからデータを取り込む機能がありますので利用しましょう。
MySQLに取り込めるデータには決まりがあり、以下のようなファイルになっている必要があります。この例ではフィールドをカンマで区切り、レコードごとに改行しています。区切りにはタブを使うこともできます。
「T01Prefecture.csv」をTeraPadで開いた様子
取り込むファイルを作るのは難しそうですが、実はAccessやExcelにはエクスポート機能があり、ウィザードに従って操作するだけで、簡単にCSVファイルが作れます。またtxtファイルでも取り込めます。上記のような形になっているなら手入力でもかまいません。
*ファイルからデータを取り込むには、「root」ユーザーで接続します。「pgtop」ユーザーでは権限が不足しています。
【1】T01Prefecture.zipをダウンロードして解凍します。
【2】解凍した「T01Prefecture.csv」を「C:\mysql\data\sampledb040」に配置します。
*「\」はWindowsではエンマークのことです。
これでデータを取り込む準備が整いました。
【3】以下の図を参考にMySQLを開始・接続します。
1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u root -p」と入力し、「Enterキー」を押します。
4.パスワードを求められるので入力し、「Enterキー」を押します。
*「-b」オプションを付けて起動するとビープ音が出なくなります。
【4】以下のSQL文を入力し、使用するデータベースを選択します。
USE SampleDB040;
【5】最初にテーブルが空だということを確認してください。
SELECT * FROM T01Prefecture;
*もしテーブルが空でない場合は、レコードを全件削除します。
DELETE FROM T01Prefecture;
それではいよいよファイルからデータを取り込んでみましょう。
【6】以下のSQL文を入力し、「Enterキー」を押します。
LOAD DATA INFILE "T01Prefecture.csv"
INTO TABLE T01Prefecture FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n";
*長いのでメモ帳などのエディタで入力して、コピー・ペーストしたほうが便利です。
【7】メッセージが表示され、47件のレコードが追加されました。
もちろん管理者の「root」ユーザーでテーブルの中身を確認することもできますが、「pgtop」ユーザーで確認することにします。ついでにユーザーの切り替え手順も覚えてください。
【8】ここで一度MySQLを終了します。停止はしません。
【9】今度は「pgtop」ユーザーで再び接続します。
1.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
2.パスワードを求められるので「12345」入力し、「Enterキー」を押します。
【10】以下のSQL文を入力し、使用するデータベースを選択します。
USE SampleDB040;
【11】47件のレコードが追加されたことを確認してください。
SELECT * FROM T01Prefecture;
【解説】
ファイルからデータを取り込む部分について解説します。
LOAD DATA INFILE "T01Prefecture.csv"
INTO TABLE T01Prefecture FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n";
(1)上記のコマンドは選択中のデータベースの保存場所である「C:\mysql\data\sampledb040」が基点になりますので、このディレクトリ内にファイルを置けば、ファイル名のみで指定できます。
"T01Prefecture.csv"
他の場所に置く場合は絶対パスか、このディレクトリからみた相対パスで指定する必要があります。
(2)データを取り込むテーブルはあらかじめ作成しておく必要があります。
INTO TABLE T01Prefecture
(3)フィールドの区切りはカンマです。
FIELDS TERMINATED BY ","
(4)改行コードは「CR+LF」です。
LINES TERMINATED BY "\r\n";
TeraPadなどのエディタで開くとわかりますが、「T01Prefecture.csv」は以下のように保存されています。
データベース、サーバー、クライアント、ファイルがすべて「SHIFT-JIS」なので、文字化けせずデータを取り込めています。どれか一つでも違う文字コードで設定している場合は注意が必要です。
今回使用した「T01Prefecture.csv」の作り方は次回説明します。