記事内に広告が含まれています。

【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件ですね。これでテーブル定義だけがコピーされたことが分かると思います。

【スポンサーリンク】

関連記事

【Oracle】SELECT文の基本
OracleにおけるSELECT文の基本的な使い方です。
【Oracle】SELECT文で検索条件を指定する
OracleのSELECT文で検索条件を指定する方法です。
【スポンサーリンク】

参考サイト

CREATE TABLE

.