データのインポート・エクスポートファイル出力
ファイルからSQL文を実行し、実行結果をファイル出力
unknown
Enter password: パスワード
-t または --table | 表形式で結果表示 |
-N または --skip-column-names | フィールド名を出力しない |
以下の2つの例では、下のようにSELECT文の書かれたSQLファイルを実行し、 その実行結果を例1では表形式、 例2ではフィールド名なしの表形式でファイル出力します。
SELECT * FROM tbl_Customer;
例1: 実行結果を表形式(-t)で出力
# ファイルからSELECT文を実行し、実行結果を表形式でファイル出力 C:\mysql\bin> C:\mysql\bin>mysql -t -u root -p db_User < C:\mysql\data\select.sql > C:\mysql\data\sql.log Enter Enter password: ********* Enter
+--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U002 | 太郎 | 田中 | m | 30 | | U003 | 一郎 | 鈴木 | m | 45 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U006 | 太郎 | 鈴木 | m | 22 | | U007 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+
例1: 実行結果形式(-t)で、フィールド名を含めずに(-N)出力
# ファイルからSELECT文を実行し、実行結果を表形式でファイル出力 C:\mysql\bin> mysql -t -N -u root -p db_User < c:\mysql\data\select.sql > c:\mysql\data\sql.log Enter Enter password: ********* Enter
+------+------+------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U002 | 太郎 | 田中 | m | 30 | | U003 | 一郎 | 鈴木 | m | 45 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U006 | 太郎 | 鈴木 | m | 22 | | U007 | 花子 | 佐藤 | f | 35 | +------+------+------+------+------+
ファイルからSQL文を実行し、その実行結果をファイルに追加出力
unknown
-t または --table | 表形式で結果表示 |
-N または --skip-column-names | フィールド名を出力しない |
以下の例では、まずSELECT * FROM tbl_Customer WHERE Sex='f';
と書かれたSQLファイル(select1.sql)を実行し、
表形式で実行結果を「sql.log」というファイル名で出力します。
# select1.sql ファイルのSELECT文を実行し、 # 実行結果を表形式で sql.log という名でファイル出力 C:\mysql\bin> mysql -t -u root -p db_User < C:\mysql\data\select1.sql > C:\mysql\data\sql.log Enter Enter password: ******** Enter
+--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U007 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+
次に、SELECT * FROM tbl_Customer WHERE Sex='m';
と書かれたSQLファイル(select2.sql)を実行し、
フィールド名を含めない表形式で実行結果を既存の「sql.log」に追加出力します。
# select2.sqlファイルのSELECT文を実行し、 # 実行結果をフィールド名を含めないファイル形式で # 上で出力した「sql.log」ファイルに追加出力 C:\mysql\bin> mysql -t -u root -p db_User < C:\mysql\data\select2.sql >> C:\mysql\data\sql.log Enter Enter password: ********
+--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U007 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U002 | 太郎 | 田中 | m | 30 | | U003 | 一郎 | 鈴木 | m | 45 | | U006 | 太郎 | 鈴木 | m | 22 | +--------+-----------+----------+------+------+
テーブルの内容をファイルに出力(部分一致)
unknown
tbl_Customer テーブルから、FirstName フィールドに「子」が含まれるレコードを検索し、その検索結果を「name_in_ko.tab」というファイル名でファイル出力します。
C:\mysql\bin> mysql -u root -p db_User Enter Enter password: ***** Enter Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 32 to server version: 4.0.26-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. # tbl_Customerテーブルの内容 mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U002 | 太郎 | 田中 | m | 30 | | U003 | 一郎 | 鈴木 | m | 45 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U006 | 太郎 | 鈴木 | m | 22 | | U007 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # 部分一致するレコードのみファイル出力 mysql> SELECT * INTO OUTFILE 'c:\\mysql\\data\\name_in_ko.tab' Enter -> FIELDS TERMINATED BY '\t' Enter -> LINES TERMINATED BY '\r\n' Enter -> FROM db_User.tbl_Customer Enter -> WHERE FirstName LIKE '%子%'; Enter Query OK, 3 rows affected (0.00 sec)
U001 花子 鈴木 f 21 U004 萌子 山口 f 18 U007 花子 佐藤 f 35
テーブルの内容をファイルに出力(完全一致)
unknown
tbl_Customer テーブルから、LastName フィールドが「鈴木」のレコードを検索し、その検索結果を「suzuki.tab」というファイル名でファイル出力します。
C:\mysql\bin> mysql -u root -p db_User Enter Enter password: ***** Enter Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 32 to server version: 4.0.26-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. # tbl_Customerテーブルの内容 mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U002 | 太郎 | 田中 | m | 30 | | U003 | 一郎 | 鈴木 | m | 45 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U006 | 太郎 | 鈴木 | m | 22 | | U007 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # 完全一致するレコードのみファイル出力 mysql> SELECT * INTO OUTFILE 'c:\\mysql\\data\\suzuki.tab' Enter -> FIELDS TERMINATED BY '\t' Enter -> LINES TERMINATED BY '\r\n' Enter -> FROM db_User.tbl_Customer Enter -> WHERE LastName='鈴木'; Enter Query OK, 3 rows affected (0.00 sec)
U001 花子 鈴木 f 21 U003 一郎 鈴木 m 45 U006 太郎 鈴木 m 22
データベースからテーブル内容をダンプ
unknown
[FIELDS OPTIONALY
[TERMINATED by '区切り文字']
[ENCLOSED BY '数値型以外を囲む文字列']
[ESCAPED BY 'エスケープ文字']
]
[LINES
[TERMINATED BY "改行文字"]
]
FROM テーブル名;
SELECTしたテーブル内容をファイルに書き出します。
ファイルは指定したファイル名で、サーバーホスト上に作成されます。
指定したファイル名が既に存在する場合はエラーになります。
SELECT ... INTO OUTFILE 'ファイル名' FROM テーブル名;
のように、
FIELDS OPTIONALLYオプション、LINESオプションを省略した場合は、各デフォルト値(区切り文字は 、改行文字は
、エスケープ処理なし)が適用されます。
SELECT ... INTO OUTFILE 'ファイル名'
形式のSELECT文を実行するには、サーバーホストに対するFILE権限が必要です。
例1: テーブルの内容を全てダンプ
tbl_Customerテーブルの全てのレコードを、「tbl_Customer.tab」というファイル名で出力します。
# データベース選択 mysql> USE db_User Enter Database changed # tbl_Customerテーブルの内容を全てダンプ mysql> SELECT * INTO OUTFILE 'c:\\mysql\\data\\tbl_Customer.tab' Enter -> FIELDS OPTIONALLY Enter -> ENCLOSED BY "'" Enter -> TERMINATED BY '\t' Enter -> LINES TERMINATED BY '\r\n' Enter -> FROM db_User.tbl_Customer; Enter Query OK, 7 rows affected (0.01 sec)
'U001' '花子' '鈴木' 'f' 21 'U002' '太郎' '田中' 'm' 30 'U003' '一郎' '鈴木' 'm' 45 'U004' '萌子' '山口' 'f' 18 'U005' '愛' '森永' 'f' 21 'U006' '太郎' '鈴木' 'm' 22 'U007' '花子' '佐藤' 'f' 35
例2: テーブルから指定したフィールドのデータのみダンプ
tbl_Customerテーブルから、UserID、FirstName、LastNameフィールドのみ、「FullName.tab」というファイル名で出力します。
# データベース選択 mysql> USE db_User Enter Database changed # 指定したフィールドのデータのみダンプ mysql> SELECT UserID, CONCAT(LastName, ' ', FirstName) INTO Enter -> OUTFILE 'c:\\mysql\\data\\FullName.tab' Enter -> FIELDS OPTIONALLY Enter -> ENCLOSED BY "'" Enter -> TERMINATED BY '\t' Enter -> LINES TERMINATED BY '\r\n' Enter -> FROM db_User.tbl_Customer; Enter Query OK, 7 rows affected (0.01 sec)
'U001' '鈴木 花子' 'U002' '田中 太郎' 'U003' '鈴木 一郎' 'U004' '山口 萌子' 'U005' '森永 愛' 'U006' '鈴木 太郎' 'U007' '佐藤 花子'
このページで使用しているサンプルデータ
unknown
# データベース(db_User)作成 CREATE DATABASE IF NOT EXISTS db_User; #データベース選択 USE db_User; # テーブル(tbl_Customer)作成 CREATE TABLE tbl_Customer( UserID VARCHAR(4) NOT NULL PRIMARY KEY, FirstName VARCHAR(32) NOT NULL, LastName VARCHAR(32) NOT NULL, Sex CHAR(2) DEFAULT NULL, Age INTEGER DEFAULT NULL ); # データ挿入 INSERT INTO tbl_Customer (UserID,FirstName,LastName,Sex,Age) VALUES ('U001','花子','鈴木','f',21), ('U002','太郎','田中','m',30), ('U003','一郎','鈴木','m',45), ('U004','萌子','山口','f',18), ('U005','愛','森永','f',21), ('U006','太郎','鈴木','m',22), ('U007','花子','佐藤','f',35);