Oracle Databaseでテーブルを複製。複製したテーブルから復元。検証時に使う小技。

プログラミング
スポンサーリンク

PL/SQL等でテーブルの更新結果を確認するとき、せっかく用意した元データごと更新してしまう場合がある。

もう一度データを用意し直したり、場合によってはリストアしなおしたり。結構めんどくさい。

であればテーブルをコピーしておいて、コピーから復元すればええやん。というお話。

 

コピーする(退避する)

SQLを使ってコピー元と全く同じテーブル内容のテーブルを作成(複製)することが可能。

例えばコピー元のテーブルとコピー先のテーブルが下記の通りの場合

 コピー元テーブル名:TBL1

 コピー先テーブル名:TBL1CP

SQL> CREATE TABLE TBL1CP AS SELECT * FROM TBL1;

こうすることでTBL1と全く同じ内容のTBL1CPというテーブルを作成する。

 

復元する

非常にシンプルな話。

いらなくなったテーブルを消して、コピーしておいたテーブルを被せれば良い。

SQL> DROP TABLE TBL1;

SQL> CREATE TABLE TBL1 AS SELECT * FROM TBL1CP;

1つ目のSQLはTBL1を削除するSQL文。

2つ目でコピーしたテーブルから復元している。厳密には作り直している。

が、トータルたった3行でコピーと復元が可能。

 

テーブル数が増えたらセーブポイントとか、いっそのことリストアかけるほうが早いけど。

テーブル数少なければこんな方法もあるよ的な備忘録。

コメント

タイトルとURLをコピーしました