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