このリポジトリには、PHP を使用してデータベースをダンプするための使いやすいクラスが含まれています。現在、MySQL、PostgreSQL、SQLite、MongoDB がサポートされています。舞台裏ではmysqldump
、 pg_dump
、 sqlite3
、およびmongodump
が使用されます。
さまざまなドライバーを使用してデータベース ダンプを作成する方法の簡単な例を次に示します。
MySQL
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->dumpToFile('dump.sql');
PostgreSQL
SpatieDbDumperデータベースPostgreSql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->dumpToFile('dump.sql');
SQLite
SpatieDbDumperデータベースSqlite::create() ->setDbName($pathToDatabaseFile) ->dumpToFile('dump.sql');
includeTables
オプションを使用する場合は、Sqlite バージョン 3.32.0 が必要です。
モンゴDB
SpatieDbDumperDatabasesMongoDb::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->dumpToFile('dump.gz');
私たちはクラス最高のオープンソース パッケージの作成に多くのリソースを投資しています。有料製品のいずれかを購入することで、私たちをサポートできます。
当社のどのパッケージを使用しているかについて、故郷から葉書を送っていただき、誠にありがとうございます。当社の住所は、お問い合わせページに記載されています。受け取ったすべてのポストカードをバーチャル ポストカード ウォールに公開します。
ダンプするには、MySQL-db のmysqldump
をインストールする必要があります。
ダンプするには、PostgreSQL-db のpg_dump
をインストールする必要があります。
ダンプするには SQLite-db のsqlite3
をインストールする必要があります。
ダンプするには、MongoDB-db のmongodump
をインストールする必要があります。
ダンプ ファイルを圧縮するには、 gzip
またはbzip2
インストールする必要があります。
パッケージは、composer 経由でインストールできます。
作曲家には spatie/db-dumper が必要です
これは、MySql データベースのダンプを作成する最も簡単な方法です。
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->dumpToFile('dump.sql');
PostgreSQL を使用している場合は、そのダンパーを使用するだけで、ほとんどのメソッドは両方の MySql で使用できます。 PostgreSql ダンパー。
SpatieDbDumperデータベースPostgreSql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->dumpToFile('dump.sql');
mysqldump
(またはpg_dump
) バイナリがデフォルト以外の場所にインストールされている場合は、 setDumpBinaryPath()
関数を使用してパッケージに通知できます。
SpatieDbDumperDatabasesMySql::create() ->setDumpBinaryPath('/custom/location') ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->dumpToFile('dump.sql');
アプリケーションがデプロイされており、ホスト (デフォルトは 127.0.0.1) を変更する必要がある場合は、 setHost()
関数を追加できます。
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->setHost($host) ->dumpToFile('dump.sql');
データベース ダンプを作成するときは、AUTO_INCREMENT 値の包含を制御する必要がある場合があります。これは、主キーの競合を回避したり、環境間でデータを転送するときに ID の一貫性を維持したりするために非常に重要です。
ダンプ内のテーブルから AUTO_INCREMENT 値を省略するには、skipAutoIncrement メソッドを使用します。これは、特定の AUTO_INCREMENT 値がすでに存在する可能性がある別のデータベースにダンプをインポートするとき、または正確な値が関連しないときに、競合を防ぐのに特に役立ちます。
SpatieDbDumperDatabasesMySql::create() ->setDbName('データベース名') ->setUserName('ユーザー名') ->setPassword('パスワード') ->skipAutoIncrement() ->dumpToFile('dump.sql');
デフォルトでは、AUTO_INCREMENT 値がダンプに含まれます。ただし、以前に SkipAutoIncrement メソッドを使用していて、後続のダンプに AUTO_INCREMENT 値が確実に含まれるようにしたい場合は、dontSkipAutoIncrement メソッドを使用してそれらの値を明示的に含めます。
SpatieDbDumperDatabasesMySql::create() ->setDbName('データベース名') ->setUserName('ユーザー名') ->setPassword('パスワード') ->dontSkipAutoIncrement() ->dumpToFile('dump.sql');
一部のアプリケーションまたは環境では、データベース資格情報が個々のコンポーネントではなく URL として提供されます。この場合、個々のメソッドの代わりにsetDatabaseUrl
メソッドを使用できます。
SpatieDbDumperDatabasesMySql::create() ->setDatabaseUrl($databaseUrl) ->dumpToFile('dump.sql');
URL を指定すると、パッケージはそれを自動的に解析し、個々のコンポーネントを該当するダンパーに提供します。
たとえば、URL mysql://username:password@hostname:3306/dbname
を指定すると、ダンパーはhostname
host を使用し、ポート3306
で実行され、 username
とpassword
を使用してdbname
に接続します。
配列の使用:
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->includeTables(['テーブル1', 'テーブル2', 'テーブル3']) ->dumpToFile('dump.sql');
文字列を使用する場合:
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->includeTables('テーブル1, テーブル2, テーブル3') ->dumpToFile('dump.sql');
mysqldump コマンドのオプションとして「 --column-statistics=0 」を使用するには、 doNotUseColumnStatistics()メソッドを使用できます。
mysqldump 8 をインストールしている場合、デフォルトで、 information_schemaデータベース内のcolumn_staticsテーブルにクエリが実行されます。 5.7 などの古いバージョンの MySql (サービス) では、このテーブルは存在しません。そのため、mysqldump の実行中に例外が発生する可能性があります。これを回避するには、 doNotUseColumnStatistics()メソッドを使用します。
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->doNotUseColumnStatistics() ->dumpToFile('dump.sql');
配列を使用してダンプからテーブルを除外できます。
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->excludeTables(['テーブル1', 'テーブル2', 'テーブル3']) ->dumpToFile('dump.sql');
または文字列を使用して:
SpatieDbDumperDatabasesMySql::create() ->setDbName($データベース名) ->setUserName($userName) ->setPassword($password) ->excludeTables('テーブル1、テーブル2、テーブル3') ->dumpToFile('dump.sql');
doNotCreateTables
使用すると、create ステートメントの作成を防ぐことができます。
$dumpCommand = MySql::create() ->setDbName('データベース名') ->setUserName('ユーザー名') ->setPassword('パスワード') ->doNotCreateTables() ->getDumpCommand('dump.sql', 'credentials.txt');
doNotDumpData
使用すると、行データの書き込みを防止できます。
$dumpCommand = MySql::create() ->setDbName('データベース名') ->setUserName('ユーザー名') ->setPassword('パスワード') ->doNotDumpData() ->getDumpCommand('dump.sql', 'credentials.txt');
dump コマンドに任意のオプションを追加したい場合は、 addExtraOption
使用できます。
$dumpCommand = MySql::create() ->setDbName('データベース名') ->setUserName('ユーザー名') ->setPassword('パスワード') ->addExtraOption('--xml') ->getDumpCommand('dump.sql', 'credentials.txt');
MySql を使用している場合は、追加オプションとして--databases
を使用してデータベース名を設定できます。これは、 --add-drop-database
mysqldump
オプションと組み合わせて使用すると特に便利です (mysqldump ドキュメントを参照)。
$dumpCommand = MySql::create() ->setUserName('ユーザー名') ->setPassword('パスワード') ->addExtraOption('--データベース データベース名') ->addExtraOption('--add-drop-database') ->getDumpCommand('dump.sql', 'credentials.txt');
MySql では、 --all-databases
追加オプションを使用するオプションもあります。これは、指定した MySQL 接続内のすべてのデータベースの完全バックアップを実行する場合に便利です。
$dumpCommand = MySql::create() ->setUserName('ユーザー名') ->setPassword('パスワード') ->addExtraOption('--すべてのデータベース') ->getDumpCommand('dump.sql', 'credentials.txt');
->addExtraOption('--databases dbname')
または->addExtraOption('--all-databases')
を使用すると、以前の->setDbName()
呼び出しで設定されたデータベース名がオーバーライドされることに注意してください。
出力ファイルを圧縮したい場合は、圧縮クラスを使用できます。
箱から出してすぐに使えるコンプレッサーは 2 つあります。
GzipCompressor
- これは、データベース ダンプをgzip
で圧縮します。これを使用する前に、システムにgzip
がインストールされていることを確認してください。
Bzip2Compressor
- これは、データベース ダンプをbzip2
で圧縮します。これを使用する前に、システムにbzip2
がインストールされていることを確認してください。
$dumpCommand = MySql::create() ->setDbName('データベース名') ->setUserName('ユーザー名') ->setPassword('パスワード') ->useCompressor(new GzipCompressor()) // または `new Bzip2Compressor()`->dumpToFile('dump.sql.gz');
Compressor
インターフェイスを実装した独自のコンプレッサーを作成できます。そのインターフェースは次のようになります。
名前空間 SpatieDbDumperCompressors;インターフェイス Compressor {パブリック関数 useCommand(): 文字列;パブリック関数 useExtension(): 文字列; }
useCommand
db ダンプが送り込まれる圧縮コマンドを返すだけです。 GzipCompression
の実装は次のとおりです。
名前空間 SpatieDbDumperCompressors;クラス GzipCompressor は Compressor を実装します {パブリック関数 useCommand(): string{return 'gzip'; }パブリック関数 useExtension(): string{return 'gz'; } }
$コンポーザーテスト
最近の変更点の詳細については、CHANGELOG を参照してください。
詳細については、「貢献」を参照してください。
セキュリティの脆弱性を報告する方法については、セキュリティ ポリシーをご覧ください。
フリーク・ファン・デル・ヘルテン
すべての貢献者
初期の PostgreSQL サポートは Adriano Machado によって提供されました。 SQlite のサポートは Peter Matseykanets によって提供されました。
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。