.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 / MariaDB | PostgreSQL | SQLite |
|---|---|---|---|
| 対話モードから読み込み | source ファイル名 | \i ファイル名 | .read ファイル名 |
| 対話モードから読み込み(短縮) | \. ファイル名 | — | — |
| コマンドラインから実行 | mysql ... < ファイル名 | psql ... -f ファイル名 | sqlite3 ... < ファイル名 |
概要
.sql ファイルはただのテキストファイルです。テキストエディタで SQL 文を書き、拡張子を『.sql』にして保存するだけで作成できます。特別なツールは必要ありません。
複数の SQL 文をまとめてファイルに記述しておくと、テーブルの作成・初期データの投入・バックアップの復元などを1回のコマンドで実行できるため、作業の効率化やミスの防止に役立ちます。
実行方法はデータベースによって異なります。特に対話モードから読み込むコマンドは MySQL が『source』、PostgreSQL が『\i』、SQLite が『.read』とそれぞれ違いますので注意してください。
おすすめのエディタについては『環境構築』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。