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

Oracleデータベースにおいて、テーブルをコピーする方法には複数の手段があります。それぞれの方法について詳細に解説します。

CREATE TABLE AS SELECT (CTAS)

この方法では、新しいテーブルを作成し、元のテーブルのデータをコピーします。以下が使用例です。

CREATE TABLE 新しいテーブル名 AS
SELECT * FROM 元のテーブル名;

INSERT INTO SELECT

既存のテーブルにデータを挿入する場合に使用します。新しいテーブルは事前に作成されている必要があります。

INSERT INTO 新しいテーブル名
SELECT * FROM 元のテーブル名;

Data Pumpを使用したエクスポートとインポート

Data Pumpユーティリティを使ってデータベース全体または特定のテーブルのエクスポートとインポートが行えます。以下は使用例です。

エクスポート:

expdp ユーザー名/パスワード@データベース名 tables=元のテーブル名 directory=ディレクトリ名 dumpfile=ファイル名.dmp logfile=エクスポートログファイル名.log

インポート:

impdp ユーザー名/パスワード@データベース名 tables=新しいテーブル名 directory=ディレクトリ名 dumpfile=ファイル名.dmp logfile=インポートログファイル名.log remap_table=元のテーブル名:新しいテーブル名

PL/SQLを使用したカスタムコピー

特定の条件でデータを加工してコピーしたい場合には、PL/SQLを使用することができます。以下は基本的な例です。

BEGIN
    FOR rec IN (SELECT * FROM 元のテーブル名) LOOP
        INSERT INTO 新しいテーブル名 (列1, 列2, ..., 列N)
        VALUES (rec.列1, rec.列2, ..., rec.列N);
    END LOOP;
    COMMIT;
END;
/

まとめ

Oracleデータベースでテーブルをコピーする際には、上記の方法を選択肢として考慮し、データの特性や要件に応じて最適な方法を選んでください。データ量やパフォーマンスの要件に合わせて適切な手法を選択することが重要です。