データベースバックアップからSQLスクリプトダンプへの変換
バイナリのデータベースバックアップをプレーンテキストのSQLスクリプトに変換することで、データベースのテーブルやデータを完全に異なるデータベースエンジン間で移行できます。
フォーマットの比較と技術仕様
| 仕様 | BAK | SQL |
|---|---|---|
| MIMEタイプ | application/octet-stream | text/plain |
| タイプ | database backup archive | relational schema & query script |
| 圧縮 | MS SQL native backup compression | none (plain text DDL/DML script) |
| 標準仕様 | Microsoft SQL Server Backup Architecture | ISO/IEC 9075 SQL Standard |
| マジックバイトヘッダー | Microsoft SQL Server Backup / Generic Database dump headers | 2D 2D (--) or CREATE TABLE SQL statement |
フォーマットの概要と用途
データベース管理者は、異なるデータベース管理システム間でデータを移行したり、データベースの構築に使用された正確なコマンドを調査したりする必要が生じることがよくあります。標準的なバックアップファイルは、Microsoft SQL Serverなどの特定のシステムに結び付けられた独自のバイナリ形式で保護されています。このバイナリのアーカイブをプレーンテキストのSQLスクリプトに変換すると、任意のテキストエディタを使用して、すべてのテーブル定義やデータ行を読み取ることができるようになります。 この変換ワークフローは、あるホストから別のホストへWebアプリケーションを移行する場合や、異なるデータベースソフトウェアを実行するローカル開発環境を構築する場合に役立ちます。バックアップを読み取るために一致するサーバーバージョンに依存する代わりに、プレーンテキストのスクリプトは汎用的な一連の命令を提供します。標準的なSQLを実行できるデータベースエンジンであれば、スクリプトを実行して、テーブルの再作成やレコードの挿入を段階的に行うことができます。
技術仕様とコーデックの内訳
BAKファイルはapplication/octet-stream MIMEタイプを使用し、ネイティブなMicrosoft SQL Serverのページ構造を使用してバイナリページ、トランザクションログ、システムメタデータを格納します。これらのファイルには、大規模なデータセットを縮小するために内部圧縮アルゴリズムが利用されていることがよくあります。対照的に、SQLファイルはtext/plain MIMEタイプを使用し、CREATE TABLEなどのデータ定義言語(DDL)ステートメントや、INSERT INTOなどのデータ操作言語(DML)ステートメントを含む、人間が読める形式のステートメントを含んでいます。BAKファイルには独自のバイナリヘッダーがありますが、SQLスクリプトは追加の圧縮なしで、標準的なASCIIまたはUTF-8文字エンコーディングに完全に依存しています。
OSとブラウザの互換性
SQLスクリプトファイルはプレーンテキストであるため、ほぼ普遍的な互換性を提供します。任意のテキストエディタで開いて編集したり、Windows、macOS、Linux、Webベースのデータベース管理ツールで実行したりできます。BAKファイルははるかに制限されています。通常、Microsoft SQL Server Management Studioなど、それを作成した正確なデータベース管理システムを必要とするため、変換ツールなしでのクロスプラットフォームのデータベース移行は困難になります。
💡 役立つ情報
プレーンテキストのSQLスクリプトは圧縮されていないため、圧縮されたバイナリバックアップよりも大幅に多くのストレージスペースを消費します。長期間の保存やメールでの送信を行う前に、標準のzipまたはgzip圧縮を使用して出力SQLファイルを常に圧縮してください。
フォーマットの比較と技術仕様
圧縮されたバイナリバックアップファイルとして保存された500メガバイトのデータベースは、高速なファイバー接続でダウンロードするのに約10秒、5Gでは約45秒、標準的な4Gネットワークでは数分かかります。圧縮されていない2ギガバイトのSQLスクリプトファイルに変換されると、ファイルサイズが大きくなるため、すべてのネットワークで転送時間が4倍になります。
よくある質問
品質を落とさずにデータベースバックアップをSQLスクリプトダンプに変換するにはどうすればよいですか?
データの表現方法を変更しているだけであるため、この変換は完全にロスレス(可逆)です。バイナリのストレージページからテキストベースのSQLコマンドへの変換中、基盤となるテーブル構造、カラムの型、データ行は完全に保持されます。
データベースバックアップとSQLスクリプトダンプの違いは何ですか?
データベースバックアップは、高速なシステム復元向けに最適化された、生のデータベースページとトランザクションログを含む独自のバイナリアーカイブです。SQLスクリプトダンプは、データベーススキーマを再構築し、最初からデータを挿入するための、読み取り可能な一連のデータベースコマンドを含むプレーンテキストファイルです。