ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
SQL ダンプ(.sql)は、リレーショナルデータベースのスキーマとデータを SQL 文の羅列 として書き出した平文テキストファイルです。CREATE TABLE・CREATE INDEX・INSERT INTO などが順番に並んでおり、そのまま別の DB に流し込めば再構築できる という直感的な形式が特徴です。バックアップ・別環境への複製・バージョン管理・データ提供(OSS のサンプル DB など)と幅広く使われます。
代表的な生成元は MySQL / MariaDB の mysqldump、PostgreSQL の pg_dump(プレーン SQL モード)、SQLite の .dump コマンドです。テキストなので head で中身を覗いたり grep で特定テーブル定義を取り出したりが可能で、Git で差分管理 もできます(ただし数百 MB を超えると現実的でなくなるため、その場合はバイナリ形式やオブジェクトストレージ管理に切り替えます)。
リストアは極めて単純で、MySQL なら mysql -u user -p dbname < dump.sql、PostgreSQL なら psql -d dbname -f dump.sql、SQLite なら sqlite3 new.db < dump.sql のように 標準入力やファイル指定で流し込む だけです。スキーマだけ・データだけ・特定テーブルだけといった分割ダンプもオプションで指定できます。
内部構造とよくある中身
典型的な mysqldump 出力の冒頭は次のような構造です(説明用に簡略化)。
-- MySQL dump 10.13 Distrib 8.0.36
-- Host: localhost Database: shop
-- ------------------------------------------------------
SET NAMES utf8mb4;
SET @amp;@OLD_FOREIGN_KEY_CHECKS=@amp;@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`email` VARCHAR(255) NOT NULL,
`created_at` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOCK TABLES `users` WRITE;
INSERT INTO `users` VALUES
(1,'alice@example.com','2026-01-01 00:00:00'),
(2,'bob@example.com','2026-01-02 00:00:00');
UNLOCK TABLES;
SET FOREIGN_KEY_CHECKS=@amp;@OLD_FOREIGN_KEY_CHECKS;
ポイントは (1) 環境変数のバックアップと復元(FOREIGN_KEY_CHECKS 等を一時的に切る)、(2) DROP TABLE IF EXISTS + CREATE TABLE で冪等性を担保、(3) INSERT を 1 文に複数値でまとめる(拡張 INSERT、サイズと速度を両立)の 3 点です。pg_dump も概ね同じ構造で、COPY ... FROM stdin; ブロックでバルクロードする点だけ異なります。
条件付きエクスポートでは WHERE id < 10 や WHERE created_at >= '2026-01-01' のような句がコマンドラインで指定でき、差分ダンプを作れます。ただし参照整合性は呼び出し側の責任になるため、外部キーで繋がる範囲を意識する必要があります。
主な用途
- 日次バックアップ: cron で
mysqldump | gzip > dump-$(date +%F).sql.gzを回す王道パターン。テキスト + gzip でサイズを抑える - 本番→検証環境の複製: 個人情報をマスキングしつつスキーマとサンプルデータを移す。
--whereで 1% サンプリングする運用も多い - マイグレーション初期データ: アプリのリポジトリに
seeds.sqlとして同梱し、開発者がmake seedで投入できるようにする - OSS のサンプル DB:
world.sql/sakila.sql(MySQL)、dvdrental.sql(PostgreSQL)などはチュートリアル素材として定番 - DR(災害復旧)の最終リカバリ: バイナリログ / WAL と組み合わせて PITR を構成し、フル + 増分の二段構えにする
関連形式との比較
| 形式 | 可読性 | サイズ | リストア速度 | 用途 |
|---|---|---|---|---|
.sql(プレーン) | ◎(grep 可) | 大 | 遅い | 長期保存・移行・Git 管理 |
カスタム形式 -Fc(pg_dump) | ×(バイナリ) | 小(圧縮) | 速い(並列) | 運用バックアップ |
ディレクトリ形式 -Fd | △(per table) | 小 | 非常に速い(並列) | 大規模 DB の高速バックアップ |
| CSV / TSV | ◎ | 中 | 速い(COPY/LOAD) | 外部システム連携・分析 |
| 物理バックアップ(Percona XtraBackup 等) | × | 大 | 最速 | 大規模本番の停止時間最小化 |
「テキスト性」「サイズ」「リストア速度」はトレードオフです。日々のオペレーションは カスタム形式、長期アーカイブと監査用は プレーン SQL、と使い分ける現場が多いです。
コマンド・ツール
# MySQL: 整合性を保ったままダンプ(InnoDB)
mysqldump --single-transaction --quick --routines --triggers \
-u root -p shop > shop-$(date +%F).sql
# 圧縮して保存
mysqldump --single-transaction shop | gzip -9 > shop.sql.gz
# 特定テーブルだけ
mysqldump shop users orders > partial.sql
# PostgreSQL: プレーン SQL(移行・長期保存向け)
pg_dump -U postgres -d shop -F p -f shop.sql
# PostgreSQL: カスタム形式(運用バックアップ向け、並列リストア可)
pg_dump -U postgres -d shop -F c -f shop.dump
pg_restore -U postgres -d shop_new -j 4 shop.dump
# SQLite: テキストダンプとリストア
sqlite3 source.db ".dump" > source.sql
sqlite3 target.db < source.sql
GUI なら MySQL Workbench / pgAdmin / DBeaver / TablePlus が エクスポート / インポートウィザード を持っています。CI でリストアテストを回す場合は Docker の公式イメージ(mysql:8 / postgres:16)に流し込むのが定番です。
注意点
- 文字コード事故:
SET NAMES utf8mb4を冒頭に入れ忘れると、リストア先でlatin1解釈されて文字化け(いわゆる「mojibake」)が起きる。--default-character-set=utf8mb4も明示する - ロック時間:
mysqldumpはデフォルトで全テーブルにロックをかける。本番では--single-transactionを必ず付け、可能ならレプリカから取得する - 巨大 INSERT: 1 文に何万行も詰め込んだ拡張 INSERT は
max_allowed_packetを超える。サーバ側でmax_allowed_packet=256M程度に上げる - バージョン非互換: MySQL 5.7 → 8.0 で予約語が追加された(
RANK・WINDOW等)。古いダンプを新版で読むときはsedで書き換えるか、--column-statistics=0を試す - 機密情報: 個人情報を含むダンプを Git に push する事故が後を絶たない。
.gitignoreに*.sqlを入れる、または専用ストレージに分ける - 外部キー順序: 手書きで INSERT を作る場合、参照される親テーブルから順に投入する。
FOREIGN_KEY_CHECKS=0で抑止しつつ最後に再有効化するのが定番
関連リンク
- 親カテゴリ: データベース・データ交換
- 概論: ファイル拡張子とは
- カテゴリ: データベース(カテゴリ)
- 同 Wave: SQLite / NDJSON / BSON / DB ダンプ
- 関連形式: CSV(.csv) / JSON(.json)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?