とあるプロジェクトで、データベースのバックアップ用に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宛にささやいていただくか、この記事のコメント欄にお寄せください。
Pingback: Tweets that mention SQLダンプを生成するCakePHPプラグイン “Sql Dumper” @ php-tips -- Topsy.com
Pingback: SQLダンプを生成するCakePHPプラグイン “Sql Dumper” @ php-tips | とっても! ちゅどん(雑記帳)
Pingback: CakePHP の Modelで使用しているテーブルをダンプ | X->A->O - Part 1