ここではMySQLで使用するDDL/DMLのSQLの構文と標準で用意されているツールについて簡単ですが解説します。随時更新もしていきたいと思います。

[DDL(データベース・テーブルの作成・変更・削除)]  [データのインポートとエクスポート] 
[DML(テーブル内のレコードの追加・検索・更新・削除)] [データのバックアップとリカバリー]

データのインポートとエクスポート

ここではDMLの説明の前にあらかじめデータを用意しておきたいので CSV形式で作成されたテキストファイルをテーブルに登録する方法(インポート)と 登録済データをCSV形式のテキストファイルに書き込む(エクスポート)の説明をします。
ここでのインポート/エクスポートはOracleではローダーに該当します。

データのインポート

1) 構文
LOAD DATA INFILE "絶対パス\ファイル名" INTO テーブル名 [フィールドに関するオプション]

2) フィールドに関するオプション
[FIELDS [TERMINATED BY '区切り文字'] [[OPTIONALLY] ENCLOSED by '囲み文字']
[ESCAPED BY 'エスケープ文字' ]] [LINES [STARTING BY '行頭のスキップする文字']
[TERMINATED BY '改行文字']] [IGNORE 数値 LINES] [(カラム名1,カラム名2・・・)]

3) 手順
@最初に
下記の8項目を持つテーブルに対してデータをインポートします。
 例)会員管理テーブル

    create table m_customer(
        nc_member       char(5)         default '' not null,   -- 1)会員番号
        nm_member_s    varchar(20)   default '' not null,   -- 2)会員姓
        nm_member_m   varchar(20)   default '' not null,   -- 3)会員名
        nm_member_k    varchar(20)   default '' not null,   -- 4)会員名カナ
        ct_keisyo          char(1)         default '' not null,   -- 5)敬称区分=1:様、2:御中
        nc_telephone    varchar(15)   default '' not null,   -- 6)電話番号
        dt_entry           datetime                    not null,   -- 7)登録日時
        dt_update         timestamp                  not null,   -- 8)更新日時
        primary key (nc_member)
    );


Aデータの作成
エクセル又はエディタによりCSV形式(タブ区切り)のデータを作成します。このとき更新日付はタイムスタンプ型なので この列項目のデータは不要です。エクセルで作成した場合は保存時にファイルの種類をテキスト(タブ区切り)にして保存して下さい。
またここでは保存ファイル名をc:\temp\会員管理データ.txtとします。

Bインポート用制御ファイルの作成
MySQLコマンドラインから直接、上記コマンドを入力しても実行可能ですが、入力間違いや今後何度もインポートする場合は、SOURCEコマンド を使用して処理するようにして下さい。ここでは下記の通り、エディタを使用してインポート用制御ファイルを予め用意しておきます。
またこのロード用制御ファイルの保存ファイル名をc:\temp\m_customer.ctlとします。
 例)インポート用制御ファイルの記述

  LOAD DATA INFILE "c:/temp/m_customer.txt" INTO TABLE m_customer
  FIELDS TERMINATED BY ' ' LINES TERMINATED BY "\r\n"
  IGNORE 1 LINES

    注1)INFILEの後に指定するフォルダ名は"\"ではなく"/"を使用する
    注2)FIELDS TERMINATED BYはシングルクォート間にタブ区切り文字を定義
    注3)LINES TERMINATED BYはデータ1行の区切りとして改行コードを定義
    注4)IGNORE 1 LINESはデータの1行目は取り込まないとしている。列のタイトルが入っているため


Cインポートの実行
まずDOSプロンプトを立ち上げ、MySQL Command Line Clientを起動し使用するデータベースに切り替えます。
C:\Documents and Settings\user>mysql  -u  root  -ptwoness
Welcome  to  the  MySQL  monitor  ・・・・
Your  MySQL  connection  id・・・・

Type  'help;'  or  '\h'  for  the  help.  Type  '\c'  to  clear  the  buffler.

mysql>use  twonessdb;
Database  changed
mysql>


次にsourceコマンドよりインポート用制御ファイルの内容を起動すると下記の通りメッセージが出力されればインポートが完了です。エラーが 発生した場合はデータの列とテーブルの列内容が合っているか制御ファイルの定義が間違っていないか確認して再度実行して下さい。
select文を発行して内容の確認が出来ます。
mysql>source  c:/temp/m_customer.ctl;
Query  OK,  5  rows  affected,  5  warnings  (0.01  sec)
Records:  5  Deleted:  0  Skipped:  0  Warnings:  0  

mysql>select * from m_customer;


データのエクスポート

1) 構文
@該当テーブルの全項目を対象とする場合
 ・SELECT * INTO OUTFILE
    "絶対パス\ファイル名" INTO テーブル名 [フィールドに関するオプション] FROM テーブル名

A該当テーブルの指定項目を対象とする場合
 ・SELECT カラム名1,・・・ INTO OUTFILE
    "絶対パス\ファイル名" INTO テーブル名 [フィールドに関するオプション] FROM テーブル名


2) フィールドに関するオプション
前記インポートと同様

3) 手順
@最初に
前記でインポートによりテーブルの登録されたデータをエクスポートします

Aエクスポート用制御ファイルの作成
インポートと同様に、エディタを使用してエクスポート用制御ファイルを予め用意しておきます。
またこのエクスポート用制御ファイルの保存ファイル名をc:\temp\m_customer.expとします。
 例)エクスポート用制御ファイルの記述

  SELECT * INTO OUTFILE "c:/temp/m_customer_exp.txt"
  FIELDS TERMINATED BY ' ' ENCLOSED BY ''
  LINES TERMINATED BY '\r\n' FROM m_customer;

    注1)OUTFILEの後に指定するフォルダ名は"\"ではなく"/"を使用する
    注2)FIELDS TERMINATED BYはシングルクォート間にタブ区切り文字を定義
    注3)LINES TERMINATED BYはデータ1行の区切りとして改行コードを定義


Bエクスポートの実行
sourceコマンドよりエクスポート用制御ファイルの内容を起動すると下記の通りメッセージが出力されればエクスポートが完了です。エラーが 発生した場合は制御ファイルの定義が間違っていないか確認して再度実行して下さい。
出力ファイルをエクセルかエディタで開くと内容の確認が出来ます。
mysql>source  c:/temp/m_customer.exp;
Query  OK,  5  rows  affected  (0.01  sec)

mysql>




Copyright (C)2006 TwoNess,inc. All rights reserved.