SQLファイルとは
-
拡張子
.sqlを付けたテキストファイルで、
SQL(Structured Query Language)の文をそのまま書き込んだもの。
例)create_tables.sql/import_data.sql
主な用途
| 用途 | 中身の例 | いつ使う? |
|---|---|---|
| スキーマ定義 | CREATE TABLE users (...); |
テーブルやインデックスを一括作成したいとき |
| 初期データ投入 | INSERT INTO prefectures VALUES ...; |
マスターデータを配布・再現するとき |
| データ移行/パッチ | UPDATE orders SET status='paid' WHERE ...; |
本番データを修正・移行するとき |
| バックアップ/ダンプ |
-- Dumped by pg_dump(大量の INSERT 文) |
データベース全体をファイルに保存したいとき |
| テスト用シード | 開発・CIで使う少量の INSERT | 自動テストで同じ状態を再現 |
実行方法
CLI で直接流す
# PostgreSQL
psql -h db -U user -d mydb -f create_tables.sql
メリットと注意点
メリット
- 再現性が高い:同じファイルを流せば同じ DB 状態になる
- レビューしやすい:Git で差分管理
- ツール互換:ほぼすべての RDBMS が .sql をインポート可能
注意点
- ロールバック:DDL/DML を混ぜる場合はトランザクションで包む or 分割する
- ロック・性能:巨大ダンプをそのまま流すとテーブルロックや I/O 負荷が大きい
- 環境差分:ローカル・本番で拡張や権限が違うとエラーになる
※DDLはテーブルの作成や削除など構造変更、DMLはデータ取得、追加、削除などのデータ変更
DDLについてはLaravelのマイグレーションファイルと同じだ。
BEGINとCOMMIT入れておかないと怖いことになることは忘れていないぞ。。。。