Firebird データベースをバックアップしたいのですが、バックアップから特定のテーブルを除外したいのですが、可能ですか?
そうでない場合は、実行中に Firebird データベースのコピーを作成したいと思います (バックアップと復元を行わずに)。
gbak も nbackup もこのようなことをサポートしていないようですが、会社には選択的なバックアップを実行できるソフトウェアがありますが、それがどのように機能するのかわかりません。その動作を再現したいと思います。
gbakは完全なデータベースしか実行できませんが、Firebirdがオンラインのときに実行できます。
バックアップせずにgbakを使用するのに最も近い方法は、gbak-Bをgbak-Rにパイプして、中間バックアップファイルをスキップすることです。両方の操作が同時に行われるため、時間の節約にもなります。例えば、
gbak -B dbhost:mydb stdout -user SYSDBA -password masterkey | gbak -R stdin /firebird/mydbcopy.fdb -user SYSDBA -password masterkey
それ以外の場合、データを移動したいだけの場合は、サードパーティのツールを使用しています。ON EXTERNAL DATA SOURCEを利用して、選択したテーブルをローカルで更新するプロシージャを作成することもできます。(Firebird 2.5のみ)
Firebird のバージョン 3 の gbak には、skip_d という名前の新しいパラメーターがあり、このパラメーターに正規表現を指定できます。
詳細情報はこちら
例: gbak -b -skip_d '(table1|table2|table3)' -user ...