Web
Analytics

社畜ゲートウェイ

京成・京急を中心に取り上げる阪急ファンのブログです。日本一遅い速報を届けます。

MENU

【スポンサーリンク】

【Oracle】テーブルをコピーする

【スポンサーリンク】

Oracleでテーブルコピーを実施する方法です。テーブルのバックアップを作成する時に高頻度で使用すると思います。

テーブルのコピー

テーブルのコピー、つまり複製ですが、3つの結果によって少しだけSQLを変える必要があります。

  • テーブルのデータを丸ごとコピー
  • テーブルのデータの一部をコピー
  • テーブルの構造(定義)だけコピー

コピーの結果がどうなるかによって、SQLを変える必要があるので注意して下さい。

 

テーブルのデータごとコピーする

テーブルのデータごと、つまり、テーブル定義とデータをそのままコピーする場合、次の様にSQLを書けばOKです。

CREATE TABLE "新規作成するテーブル" AS SELECT * FROM "コピー元テーブル";

ぶっちゃけこれだけです。実際に実行してみます。今「TAB_PRODUCT_FRUIT」というテーブルがあるので、これを「NEW_TAB_PRODUCT_FRUIT」というテーブルの名前で複製します。コピー元のテーブルの状態はこんな感じです。

f:id:neko_britannia:20201017163618j:plain

テーブルをコピーします。次のSQLを作成しました。

CREATE TABLE NEW_TAB_PRODUCT_FRUIT AS SELECT * FROM TAB_PRODUCT_FRUIT;

実際に実行しましょう。

f:id:neko_britannia:20201017163151j:plain

では、新しく作成したテーブルを見てみます。

f:id:neko_britannia:20201017163432j:plain

データ入っています。

 

テーブルのデータの一部をコピー

テーブルのデータの一部をコピーして複製する場合、WHERE句に条件を指定することで実現可能です。

CREATE TABLE "新規作成するテーブル" AS SELECT * FROM "コピー元テーブル"
WHERE COL_1 = "条件";

先ほどと同じように「TAB_PRODUCT_FRUIT」というテーブルをコピー元にして、一部のデータだけコピーしたテーブルを作成します。

CREATE TABLE NEW_TAB_PRODUCT_FRUIT_1 AS SELECT * FROM TAB_PRODUCT_FRUIT
WHERE CODE = '001';

実行後に「NEW_TAB_PRODUCT_FRUIT_1」テーブルが出来て、「CODE」カラムの値が「001」のデータのみ入っていれば成功です。実際に実行してみましょう。

f:id:neko_britannia:20201017165550j:plain

エラーにはなっていませんね。実際に「NEW_TAB_PRODUCT_FRUIT_1」の中身を確認してみます。

f:id:neko_britannia:20201017165710j:plain

大丈夫みたいですね。

 

テーブルの構造だけコピーする

テーブルの構造だけコピーする場合は、ちょっと工夫してWHERE句を付けてあげる必要があります。構文は次に様に書けばOKです。

CREATE TABLE "新規作成するテーブル" AS SELECT * FROM "コピー元テーブル"
WHERE 1 <> 1;

ちょっと意味分からない…と言う人は、とりあえずWHERE句をコピペで良いと思います。先ほどと同じように「TAB_PRODUCT_FRUIT」というテーブルをコピー元にしてテーブル定義のみを複製してみます。

CREATE TABLE NEW_TAB_PRODUCT_FRUIT_2 AS SELECT * FROM TAB_PRODUCT_FRUIT
WHERE 1 <> 1;

では実行しましょう。

f:id:neko_britannia:20201017164616j:plain

果たして中身は…

f:id:neko_britannia:20201017164734j:plain

「データが見つかりません」という絶妙な返事が来ましたね。テーブルがなければエラーメッセージ「ORA-00942: 表またはビューが存在しません。」と怒られるので、テーブルは存在します。念のためレコード数を取得してみましょうか。

f:id:neko_britannia:20201017164924j:plain

見事に0件ですね。これでテーブル定義だけがコピーされたことが分かると思います。

 

関連記事

www.stellacreate.com

www.stellacreate.com

参考サイト

docs.oracle.com