【MySQL】テキストファイルからSQLを実行する方法


ここではMySQLで、テキストファイルからSQLを実行する方法を紹介しています。

テキストファイルからSQLを実行する方法

テキストファイルからSQLを実行するには、SOURCEコマンドまたは\.コマンドを使います。

SOURCEコマンド

SOUCEコマンドの基本的な使い方は次の通りです。

source ファイル名

次のSQLでは、C直下のtmpフォルダにあるテキストファイルから「SELECT * FROM tab1;」というSQLを実行しています。

mysql> source C:\tmp\test.txt
+--------+----------+-------+------+
| emp_id | emp_name | dept  | age  |
+--------+----------+-------+------+
| 00001  | Suzuki   | HR    |   28 |
| 00002  | Tanaka   | SALES |   25 |
| 00003  | Kizaki   | SALES |   35 |
| 00004  | Tanaka   | DEV   |   45 |
| 00005  | Kizaki   | DEV   |   55 |
| 00006  | Nakata   | DEV   |   35 |
+--------+----------+-------+------+
6 rows in set (0.00 sec)

\.コマンド

.\コマンドの基本的な使い方は次の通りです。

\. ファイル名

次のSQLでは、C直下のtmpフォルダにあるテキストファイルから「SELECT * FROM tab1;」というSQLを実行しています。

mysql> \. C:\tmp\test.txt
+--------+----------+-------+------+
| emp_id | emp_name | dept  | age  |
+--------+----------+-------+------+
| 00001  | Suzuki   | HR    |   28 |
| 00002  | Tanaka   | SALES |   25 |
| 00003  | Kizaki   | SALES |   35 |
| 00004  | Tanaka   | DEV   |   45 |
| 00005  | Kizaki   | DEV   |   55 |
| 00006  | Nakata   | DEV   |   35 |
+--------+----------+-------+------+
6 rows in set (0.00 sec)

補足

TXT拡張子と同様に、拡張子をSQLに変更しても実行することが出来ました。

mysql> source C:\tmp\test.sql
+--------+----------+-------+------+
| emp_id | emp_name | dept  | age  |
+--------+----------+-------+------+
| 00001  | Suzuki   | HR    |   28 |
| 00002  | Tanaka   | SALES |   25 |
| 00003  | Kizaki   | SALES |   35 |
| 00004  | Tanaka   | DEV   |   45 |
| 00005  | Kizaki   | DEV   |   55 |
| 00006  | Nakata   | DEV   |   35 |
+--------+----------+-------+------+
6 rows in set (0.01 sec)

mysql> \. C:\tmp\test.sql
+--------+----------+-------+------+
| emp_id | emp_name | dept  | age  |
+--------+----------+-------+------+
| 00001  | Suzuki   | HR    |   28 |
| 00002  | Tanaka   | SALES |   25 |
| 00003  | Kizaki   | SALES |   35 |
| 00004  | Tanaka   | DEV   |   45 |
| 00005  | Kizaki   | DEV   |   55 |
| 00006  | Nakata   | DEV   |   35 |
+--------+----------+-------+------+
6 rows in set (0.00 sec)