スポンサーリンク

5-4.MySQLでファイルに記述したSQLを実行する3通りの方法。

2019年7月15日

スポンサーリンク

定期的に実行するSQLなどはファイルに記述しておいて必要な時に繰り返して実行できると便利です。
MySQLでもファイルに書かれたSQLを実行する方法があります。

スポンサーリンク

1.SQLを記述するファイル

1)ファイルについて

SQLを記述したファイルは普通のテキストファイルとして保存しておきます。
1つのテキストファイルに複数のSQLを記述できます。
SQLは文の終わりに「;」(セミコロン)を忘れずに記述してください。
ファイルの拡張子は何でも構いません。「.sql」「.txt」などが一般的です。

2)記述例

サンプルとして以下のSQLが書かれたファイル「c:\temp\sample01.sql」を用意します。

サンプルSQL:ファイル名「c:\temp\sample01.sql」

select now();
select user,host from mysql.user;

 

スポンサードサーチ

2.SQLファイルの実行方法

1つめの実行方法はmysqlモニタのセッション内で「source」コマンドでファイル名を指定する方法です。

1)書き方1

【形式】
source ファイル名

【実行例】

mysql> source c:\temp\sample01.sql
+---------------------+
| now()               |
+---------------------+
| 2019-05-11 13:08:07 |
+---------------------+
1 row in set (0.01 sec)

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| ROLE01           | %         |
| SCOTT            | localhost |
| USER01           | localhost |
| USER02           | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
8 rows in set (0.07 sec)

 

2)書き方2

もう一つの実行方法はやはり同様にmysqlモニタのセッション内で「\.」のあとに空白を1つ入れてファイル名を書きます。

【形式】
\. ファイル名

【実行例】

mysql> \. c:\temp\sample01.sql
+---------------------+
| now()               |
+---------------------+
| 2019-05-11 13:08:33 |
+---------------------+
1 row in set (0.00 sec)

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| ROLE01           | %         |
| SCOTT            | localhost |
| USER01           | localhost |
| USER02           | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
8 rows in set (0.00 sec)

mysql>

 

3)書き方3

mysqlモニタコマンドで一括処理する方法です。

コマンドプロンプトやターミナルから起動します。

【形式】

mysql -u root -p < c:\temp\sample01.sql

【実行結果】

c:\TEMP>mysql -u root -p < c:\temp\sample01.sql
Enter password: *************
now()
2019-05-11 13:30:40
user    host
ROLE01  %
SCOTT   localhost
USER01  localhost
USER02  localhost
mysql.infoschema        localhost
mysql.session   localhost
mysql.sys       localhost
root    localhost

c:\TEMP>

 

スポンサードサーチ

3.おわりに

このように実行するSQLをファイルに記述しておくと何度も使うSQLをいちいち打ち込みなおしたりする手間が省けます。

また、バッチ処理など定期的に実行することに応用することも可能です。

また、実行するコマンドの結果をファイルにリダイレクションすれば実行結果をログとしてファイルに残すことも可能です。