SQLダンプを生成するCakePHPプラグイン “Sql Dumper”

標準

とあるプロジェクトで、データベースのバックアップ用にSQLを吐き出す必要があったので作ってみました。

Sql Dumper Plugin for CakePHP 1.2+(github)

# プラグインといっても、1ファイル1クラスのみ。。

できること

  • DataSourceからテーブルを取得して、Create、Drop文を生成
  • テーブルに登録されているデータをInsert文として生成
  • 生成したSQLを指定したファイルへ吐き出し

mysqldumpやpg_dumpの代用になりますが、SQLの生成にはCakeSchemaクラスを利用しているので、Schemaで作成したテーブル以外は正しくダンプできるとは限りません。
# 定義されていない型とか、トリガーとか。

インストール

git が使えるなら、 APP/plugins/ ディレクトリに移動して

git clone http://github.com/nojimage/sql_dumper.git

または、ダウンロードしたzipファイルを展開して、APP/plugins/sql_dumper といったように設置します。

オブジェクトの初期化

使いたいところで以下のように呼び出してください。

$sqlDumper = ClassRegistry::init('SqlDumper.SqlDumper', 'Vendor');

使い方

全てのデータソースから、指定パスへダンプファイル書き出し

$sqlDumper->processAll($path_to_output);

指定したデータソースの全テーブルをファイル書き出し

$sqlDumper->process('datasouce_config_key', null, $path_to_output);

指定したデータソースの全テーブルをファイル書き出し(但し、Modelクラスが定義されているもののみ)

$sqlDumper->process('datasouce_config_key', null, $path_to_output, true);

指定データソースの指定テーブルをファイル書き出し

$sqlDumper->process('datasouce_config_key', 'tablename', $path_to_output);

指定データソースの指定テーブルのCreate文を生成

$sql = $sqlDumper->getCreateSql('datasouce_config_key', 'tablename');

指定データソースの指定テーブルのDrop文を生成

$sql = $sqlDumper->getDropSql('datasouce_config_key', 'tablename');

指定データソースの指定テーブルのInsert文を生成

$sql = $sqlDumper->getInsertSql('datasouce_config_key', 'tablename', false, true);

保存先パス指定の $path_to_output は、書き出し先ディレクトリを指定してください。

保存ファイル名は、デフォルトでは「sql_dumper_データソース名_YYYYmmdd_HHMMSS.sql」となります。
データソース名の前後は、SqlDumper::$file_prefix, SqlDumper::$file_suffixで変更可能です。

なお、データベースのバックアップは付属のツールで行うのが一番です。 🙂

ライセンス・免責事項

  • このスクリプトはMITライセンスにて提供されます。
  • このスクリプトは無保証です。

質問・要望等について

質問、要望等は、@nojimage宛にささやいていただくか、この記事のコメント欄にお寄せください。

3 Comments

  1. Pingback: Tweets that mention SQLダンプを生成するCakePHPプラグイン “Sql Dumper” @ php-tips -- Topsy.com

  2. Pingback: SQLダンプを生成するCakePHPプラグイン “Sql Dumper” @ php-tips | とっても! ちゅどん(雑記帳)

  3. Pingback: CakePHP の Modelで使用しているテーブルをダンプ | X->A->O - Part 1

コメントを残す

Page optimized by WP Minify WordPress Plugin