言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

  1. トップページ
  2. SQL辞典
  3. .sqlファイルの作成と実行方法

.sqlファイルの作成と実行方法

SQL文をテキストファイルに保存し、データベースに読み込ませて実行する方法を解説します。SQLファイルの実体はただのテキストファイルで、拡張子を『.sql』にしたものです。

.sqlファイルの書き方

テキストエディタで SQL 文を記述し、ファイル名を『.sql』拡張子で保存します。ファイルの文字コードは『UTF-8』で保存してください。

create_users.sql
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL,
    age INTEGER
);

INSERT INTO users (name, email, age) VALUES ('太郎', 'taro@example.com', 25);
INSERT INTO users (name, email, age) VALUES ('花子', 'hanako@example.com', 30);

SELECT * FROM users;

このように、1つの .sql ファイルに複数の SQL 文を記述できます。各 SQL 文の末尾にはセミコロン(『;』)を付けてください。

コメントの書き方

.sql ファイルにはコメント(メモ)を記述できます。コメントはデータベースに無視されるため、SQL の説明や注意書きを残すのに使います。

書き方説明
-- コメント1行コメントです。『--』の後にスペースを1つ入れて記述します。行末まで有効です。
/* コメント */複数行コメントです。『/*』から『*/』までの範囲がコメントになります。
sample_comments.sql
-- 会員テーブルを作成します。
CREATE TABLE members (
    id INTEGER PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

/*
  以下は初期データの投入です。
  テスト用のデータを3件追加します。
*/
INSERT INTO members (name) VALUES ('田中');
INSERT INTO members (name) VALUES ('佐藤');
INSERT INTO members (name) VALUES ('鈴木');

MySQL / MariaDB で実行する

MySQL と MariaDB は構文がほぼ同じです。MariaDB は MySQL から派生(フォーク)したデータベースで、互換性があります。以下の例ではデータベース『mydb』に接続しています。事前にデータベースを作成しておく必要がありますので、まだの場合は『環境構築』を参照してください。

対話モードからファイルを読み込む

対話モード内で『source』コマンドを使って .sql ファイルを実行できます。

mysql -u root -p mydb
source /path/to/create_users.sql

『\.』は『source』の短縮形です。同じ動作をします。

\. /path/to/create_users.sql

コマンドラインから直接実行する

対話モードに入らず、ターミナルから直接 .sql ファイルを実行します。リダイレクト(『<』)を使ってファイルの中身を MySQL に流し込みます。

mysql -u root -p mydb < create_users.sql

実行結果を確認したい場合は、対話モードに入って確認します。

mysql -u root -p mydb
SELECT * FROM users;
+----+--------+--------------------+------+
| id | name   | email              | age  |
+----+--------+--------------------+------+
|  1 | 太郎   | taro@example.com   |   25 |
|  2 | 花子   | hanako@example.com |   30 |
+----+--------+--------------------+------+
2 rows in set (0.00 sec)

PostgreSQL で実行する

以下の例ではデータベース『mydb』に接続しています。事前にデータベースを作成しておく必要がありますので、まだの場合は『環境構築』を参照してください。

対話モードからファイルを読み込む

対話モード内で『\i』コマンドを使って .sql ファイルを実行できます。

psql -U postgres -d mydb
\i /path/to/create_users.sql

コマンドラインから直接実行する

対話モードに入らず、ターミナルから直接 .sql ファイルを実行します。『-f』オプションでファイルを指定します。

psql -U postgres -d mydb -f create_users.sql

実行結果を確認したい場合は、対話モードに入って確認します。

psql -U postgres -d mydb
SELECT * FROM users;
 id | name | email              | age
----+------+--------------------+-----
  1 | 太郎 | taro@example.com   |  25
  2 | 花子 | hanako@example.com |  30
(2 rows)

SQLite で実行する

対話モードからファイルを読み込む

対話モード内で『.read』コマンドを使って .sql ファイルを実行できます。

sqlite3 mydb.db
.read /path/to/create_users.sql

コマンドラインから直接実行する

対話モードに入らず、ターミナルから直接 .sql ファイルを実行します。リダイレクト(『<』)を使ってファイルの中身を SQLite に流し込みます。

sqlite3 mydb.db < create_users.sql

実行結果を確認したい場合は、対話モードに入って確認します。

sqlite3 mydb.db
.headers on
SELECT * FROM users;
id|name|email|age
1|太郎|taro@example.com|25
2|花子|hanako@example.com|30

SQLite はデフォルトではヘッダー行が表示されません。『.headers on』を実行するとカラム名が表示されます。

実行方法の比較

方法MySQL / MariaDBPostgreSQLSQLite
対話モードから読み込みsource ファイル名\i ファイル名.read ファイル名
対話モードから読み込み(短縮)\. ファイル名
コマンドラインから実行mysql ... < ファイル名psql ... -f ファイル名sqlite3 ... < ファイル名

概要

.sql ファイルはただのテキストファイルです。テキストエディタで SQL 文を書き、拡張子を『.sql』にして保存するだけで作成できます。特別なツールは必要ありません。

複数の SQL 文をまとめてファイルに記述しておくと、テーブルの作成・初期データの投入・バックアップの復元などを1回のコマンドで実行できるため、作業の効率化やミスの防止に役立ちます。

実行方法はデータベースによって異なります。特に対話モードから読み込むコマンドは MySQL が『source』、PostgreSQL が『\i』、SQLite が『.read』とそれぞれ違いますので注意してください。

おすすめのエディタについては『環境構築』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。