My Photo

« MySQLメモ007:便利なSQL文 その1 | Main | 座間味島に行ってきた(1) #okinawa »

April 29, 2012

MySQLメモ008:便利なSQL文 その2

INTO OUTFILE句

SELECT … INTO OUTFILE は検索結果をファイルに書き出す。

<SELECT文> INTO OUTFILE '<ファイル名>'

C:\applications\MySQL\MySQL Server 5.5\bin>mysql -uroot -p java_sample_db
Enter password: **********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select * from products;
+------------+-----------+-------+-----------------+-------------+---------+
| product_id | name      | price | manufacturer_id | category_id | comment |
+------------+-----------+-------+-----------------+-------------+---------+
|          1 | ita choco |   100 |               8 |           6 | NULL    |
|          2 | udon1     |    50 |              22 |           1 | sanuki  |
+------------+-----------+-------+-----------------+-------------+---------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM products INTO OUTFILE 'C:/data/products.txt';
Query OK, 2 rows affected (0.27 sec)

mysql> quit
Bye

C:\applications\MySQL\MySQL Server 5.5\bin>type c:\data\products.txt
1       ita choco       100     8       6       \N
2       udon1   50      22      1       sanuki

LOAD DATA INFILE

LOAD DATA INFILE はテキストファイルを読み込んでテーブルにデータを挿入する。

LOAD DATA [LOCAL] INFILE '<ファイル名>' INTO TABLE <テーブル名>

  LOCALなしの場合はサーバ上のファイルを読み込む。
  LOCALありの場合はMySQLクライアントを実行しているコンピュータ上のファイルを読み込む。

C:\applications\MySQL\MySQL Server 5.5\bin>type C:\data\curry_data1.txt
3       koku curry kara 130     15      7       retort
4       koku curry chuukara     130     15      7       retort

C:\applications\MySQL\MySQL Server 5.5\bin>type C:\data\curry_data2.txt
5       koku curry ama  130     15      7       retort

C:\applications\MySQL\MySQL Server 5.5\bin>mysql -uroot -p java_sample_db
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.5.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET @bak_cs=@@character_set_database;
Query OK, 0 rows affected (0.03 sec)

mysql> SET @@character_set_database=binary;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM products;
+------------+-----------+-------+-----------------+-------------+---------+
| product_id | name      | price | manufacturer_id | category_id | comment |
+------------+-----------+-------+-----------------+-------------+---------+
|          1 | ita choco |   100 |               8 |           6 | NULL    |
|          2 | udon1     |    50 |              22 |           1 | sanuki  |
+------------+-----------+-------+-----------------+-------------+---------+
2 rows in set (0.02 sec)

mysql> LOAD DATA INFILE 'C:/data/curry_data1.txt' INTO TABLE products;
Query OK, 2 rows affected (0.05 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM products;
+------------+---------------------+-------+-----------------+-------------+---------+
| product_id | name                | price | manufacturer_id | category_id | comment |
+------------+---------------------+-------+-----------------+-------------+---------+
|          1 | ita choco           |   100 |               8 |           6 | NULL    |
|          2 | udon1               |    50 |              22 |           1 | sanuki  |
 |         3 | koku curry kara     |   130 |              15 |           7 | retort
 |         4 | koku curry chuukara |   130 |              15 |           7 | retort
+------------+---------------------+-------+-----------------+-------------+---------+
4 rows in set (0.00 sec)

mysql> LOAD DATA INFILE 'C:/data/curry_data2.txt' INTO TABLE products
    -> LINES TERMINATED BY '\r\n';
Query OK, 1 row affected (0.06 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM products;
+------------+---------------------+-------+-----------------+-------------+---------+
| product_id | name                | price | manufacturer_id | category_id | comment |
+------------+---------------------+-------+-----------------+-------------+---------+
|          1 | ita choco           |   100 |               8 |           6 | NULL    |
|          2 | udon1               |    50 |              22 |           1 | sanuki  |
 |         3 | koku curry kara     |   130 |              15 |           7 | retort
 |         4 | koku curry chuukara |   130 |              15 |           7 | retort
|          5 | koku curry ama      |   130 |              15 |           7 | retort  |
+------------+---------------------+-------+-----------------+-------------+---------+
5 rows in set (0.00 sec)

mysql> SET @@character_set_database=@bak_cs;
Query OK, 0 rows affected (0.00 sec)

mysql>

上の実行例でのSET文は文字化け防止のおまじない。
SELECT … INTO OUTFILE と LOAD DATA INFILE のファイル形式は以下の句で指定する。

FIELDS [TERMINATED BY '<文字>'] [[OPTIONALLY] ENCLOSED BY '<文字>' [ESCAPED BY '<文字>'] LINES TERMINATED BY '<文字>'

FIELDS TERMINATED BY '<文字>' はフィールドの区切り文字を指定する。
FIELDS ENCLOSED BY '<文字>' はフィールドを指定した文字で囲むことを指定する。
FIELDS OPTIONALLY ENCLOSED BY '<文字>' はCHAR型、VARCHAR型などの文字列のフィールドのみを指定した文字で囲むことを指定する。
FIELDS ESCAPED BY '<文字>' はエスケープ文字を指定する。
LINES TERMINATED BY '<文字>' は改行コードを指定する。

« MySQLメモ007:便利なSQL文 その1 | Main | 座間味島に行ってきた(1) #okinawa »

MySQL」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54590008

Listed below are links to weblogs that reference MySQLメモ008:便利なSQL文 その2:

« MySQLメモ007:便利なSQL文 その1 | Main | 座間味島に行ってきた(1) #okinawa »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof