RDS for Oracleスキーマ/テーブル/特定のテーブル単位のダンプインポート方法【AWS】

Oracleアイキャッチ

RDS for Oracleにてスキーマ以外を指定したダンプインポート方法を紹介します。
ダンプファイルの取得、転送については下記記事を参照してください。

・RDS for Oracleにスキーマ以外を指定してダンプファイルからインポートしたい

スキーマ単位のインポート

スキーマ単位でインポートする方法です。ディレクトリオブジェクト、ダンプファイル名、ログファイル名は適宜読み替えてください。

DECLARE
   h1 NUMBER;  -- ジョブハンドル
BEGIN
   -- インポートジョブの作成(FULL = N、SCHEMA レベルのインポート)
   h1 := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => NULL);

   -- ダンプファイルの指定
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'test_full.dmp', directory => 'DATA_PUMP_DIR');

   -- ログファイルの指定(必要に応じて)
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'import_log.log', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);


   -- インポートジョブの実行
   DBMS_DATAPUMP.START_JOB(h1);

END;
/

テーブルだけのインポート

テーブル単位でインポートする方法です。ディレクトリオブジェクト、ダンプファイル名、ログファイル名は適宜読み替えてください。

テーブルだけインポート
DECLARE
   h1 NUMBER;  -- ジョブハンドル
BEGIN
   -- インポートジョブの作成(TABLEモードのインポート)
   h1 := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'TABLE');

   -- ダンプファイルの指定
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'test_full.dmp', directory => 'DATA_PUMP_DIR');

   -- ログファイルの指定(必要に応じて)
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'import_log.log', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

   -- 既存テーブルに対する処理
   DBMS_DATAPUMP.SET_PARAMETER(h1,'TABLE_EXISTS_ACTION','REPLACE');

   -- インポートジョブの実行
   DBMS_DATAPUMP.START_JOB(h1);

   -- ジョブの終了
   DBMS_DATAPUMP.DETACH(h1);
END;
/

特定のテーブルだけインポート

特定のテーブル単位でインポートする方法です。インポートしたいテーブル名、ディレクトリオブジェクト、ダンプファイル名、ログファイル名は適宜読み替えてください。
複数テーブルをインポートしたい場合は

DECLARE
   h1 NUMBER;  -- ジョブハンドル
BEGIN
   -- インポートジョブの作成(TABLEモードのインポート)
   h1 := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'TABLE');

   -- ダンプファイルの指定
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'test_full.dmp', directory => 'DATA_PUMP_DIR');

   -- ログファイルの指定(必要に応じて)
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'import_log.log', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

   -- 既存テーブル(TEST1という名前のテーブル)のみインポート
   DBMS_DATAPUMP.METADATA_FILTER(h1,'NAME_LIST','''TEST1''','TABLE');

   -- 既存テーブルに対する処理
   DBMS_DATAPUMP.SET_PARAMETER(h1,'TABLE_EXISTS_ACTION','REPLACE');

   -- インポートジョブの実行
   DBMS_DATAPUMP.START_JOB(h1);

   -- ジョブの終了
   DBMS_DATAPUMP.DETACH(h1);
END;
/

以上です。参考になれば幸いです。