このリポジトリには、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)。詳細については、ライセンス ファイルを参照してください。