スポンサードリンク

MySQL 既存のファイルからデータを取り込む方法。

これまでAccessのようなデータベースを使っていたり、Excelのような表計算ソフトを使っていた場合は、既に入力済みのデータがたくさんあると思います。

データベースをMySQLに移行する時に、ゼロからデータを入力していてはもったいないです。MySQLにはファイルからデータを取り込む機能がありますので利用しましょう。

MySQLに取り込めるデータには決まりがあり、以下のようなファイルになっている必要があります。この例ではフィールドをカンマで区切り、レコードごとに改行しています。区切りにはタブを使うこともできます。

「T01Prefecture.csv」をTeraPadで開いた様子
mysql-143.gif

取り込むファイルを作るのは難しそうですが、実はAccessやExcelにはエクスポート機能があり、ウィザードに従って操作するだけで、簡単にCSVファイルが作れます。またtxtファイルでも取り込めます。上記のような形になっているなら手入力でもかまいません。

*ファイルからデータを取り込むには、「root」ユーザーで接続します。「pgtop」ユーザーでは権限が不足しています。


【1】T01Prefecture.zipをダウンロードして解凍します。


【2】解凍した「T01Prefecture.csv」を「C:\mysql\data\sampledb040」に配置します。

mysql-132.gif

*「\」はWindowsではエンマークのことです。


これでデータを取り込む準備が整いました。

【3】以下の図を参考にMySQLを開始・接続します。

1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u root -p」と入力し、「Enterキー」を押します。
4.パスワードを求められるので入力し、「Enterキー」を押します。

mysql-86.gif

*「-b」オプションを付けて起動するとビープ音が出なくなります。


【4】以下のSQL文を入力し、使用するデータベースを選択します。

USE SampleDB040;
mysql-137.gif


【5】最初にテーブルが空だということを確認してください。

SELECT * FROM T01Prefecture;
mysql-131.gif

*もしテーブルが空でない場合は、レコードを全件削除します。
DELETE FROM T01Prefecture;


それではいよいよファイルからデータを取り込んでみましょう。

【6】以下のSQL文を入力し、「Enterキー」を押します。


LOAD DATA INFILE "T01Prefecture.csv"
INTO TABLE T01Prefecture FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n";


mysql-136.gif

*長いのでメモ帳などのエディタで入力して、コピー・ペーストしたほうが便利です。


【7】メッセージが表示され、47件のレコードが追加されました。

mysql-138.gif


もちろん管理者の「root」ユーザーでテーブルの中身を確認することもできますが、「pgtop」ユーザーで確認することにします。ついでにユーザーの切り替え手順も覚えてください。


【8】ここで一度MySQLを終了します。停止はしません。

mysql-139.gif


【9】今度は「pgtop」ユーザーで再び接続します。

1.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
2.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-140.gif


【10】以下のSQL文を入力し、使用するデータベースを選択します。

USE SampleDB040;
mysql-141.gif


【11】47件のレコードが追加されたことを確認してください。

SELECT * FROM T01Prefecture;
mysql-142.gif


【解説】
ファイルからデータを取り込む部分について解説します。

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」は以下のように保存されています。
mysql-144.gif

データベース、サーバー、クライアント、ファイルがすべて「SHIFT-JIS」なので、文字化けせずデータを取り込めています。どれか一つでも違う文字コードで設定している場合は注意が必要です。


今回使用した「T01Prefecture.csv」の作り方は次回説明します。


スポンサードリンク






MySQL初心者入門講座TOPへ