先日、DBの移行時に新規のスキーマに各テーブルの
DROP→CREATEのSQLを流すバッチをたたこうとしたのですが、
手癖で検証用のDBに接続してしまい、
検証用DBのテーブルをDROP→CREATEしてしまいました。
データを吹き飛ばしたというやつです。
血の気が引いたのですが、前日にダンプを取っていることを思い出したので
大慌てでdmpをimportして事なきを得ました
(補足)
DB移行などだと新旧DBのカラムが異なる場合があります。
ダンプを流す際のテーブル、カラムの指定には注意しましょう。
以下は便利なバッチのメモです
エクスポート用
expdmp.bat
SET DBUSER = DBUSER/PASSWORD/DATABASE
SET dumpfile = ファイルパス
SET logfile = ログファイルパス
SET tables = テーブル名※場合によってはスキーマも
expdp %DBUSER% directory=%1 dumpfile=%dumpfile% logfile=%logfile% tables=%tables%
インポート用
impdmp.bat
SET DBUSER = DBUSER/PASSWORD/DATABASE
SET dumpfile = ファイルパス
SET logfile = ログファイルパス
SET tables = テーブル名※場合によってはスキーマも
impdp %DBUSER% directory=%1 dumpfile=dumpfile.dmp logfile=%logfile% tables=%tables%
インポートの場合、オプションを用いたインポートが可能で
・SKIP 表はそのままに次のオブジェクトへ
・APPEND ソースから行をロードし、既存行に付け足す
・TRUNCATE 既存の行を削除してからソースから行をロードする
・REPLACE 既存の表を削除してソースから表、行をロードする
があり場合によって使い分けが可能だが、
dumpファイルを作成、取り込みを行う場合は一度バッチファイルの中身を
確認してから行うのが安牌かと思われる。