|
|
データのインポートとエクスポート
|
ここでは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・・・)]
|
|
下記の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)
);
|
|
|
エクセル又はエディタによりCSV形式(タブ区切り)のデータを作成します。このとき更新日付はタイムスタンプ型なので
この列項目のデータは不要です。エクセルで作成した場合は保存時にファイルの種類をテキスト(タブ区切り)にして保存して下さい。
またここでは保存ファイル名をc:\temp\会員管理データ.txtとします。 |
|
|
|
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行目は取り込まないとしている。列のタイトルが入っているため
|
|
|
まず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) |
フィールドに関するオプション |
|
|
前記インポートと同様
|
|
前記でインポートによりテーブルの登録されたデータをエクスポートします |
|
インポートと同様に、エディタを使用してエクスポート用制御ファイルを予め用意しておきます。
またこのエクスポート用制御ファイルの保存ファイル名を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行の区切りとして改行コードを定義
|
|
|
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. |
|