ファイル分割してダンプファイルをエクスポートしてRDSにインポートする【Oracle】【AWS】

Oracleアイキャッチ

ダンプファイルを分割してエクスポートする方法を紹介します。

・ダンプファイルを分割してエクスポートしたい
・分割したダンプファイルをインポートしたい

ファイル分割してエクスポートする

今回実行するコマンドは下記です。今回は100KBずつ分割します。

expdp test/test@orcl DIRECTORY=data_pump_dir DUMPFILE=export_part%U.dmp LOGFILE=export.log SCHEMAS=test FILESIZE=100KB
ダンプファイル分割方法

取得したdmpファイルをperlを用いてRDSに転送します。
転送する方法は下記を参考にしてください。

perl transfer.pl export_part01.dmp
perl transfer.pl export_part02.dmp
perl transfer.pl export_part03.dmp

転送したデータを確認

SELECT * FROM TABLE (RDSADMIN.RDS_FILE_UTIL.LISTDIR(P_DIRECTORY => 'DATA_PUMP_DIR'));
ダンプファイル転送結果確認

分割したダンプファイルのインポート

分割したファイルのインポートには下記のSQLで実行できます!

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 => 'export_part01.dmp', directory => 'DATA_PUMP_DIR');
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'export_part02.dmp', directory => 'DATA_PUMP_DIR');
   DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'export_part03.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);

END;
/

既存テーブルに対する処理に関しては、下記を参考にしてください。

備考:TABLE_EXISTS_ACTION のオプション

SKIP: 既存テーブルをスキップ(デフォルト動作)
APPEND: 既存テーブルにデータを追加
TRUNCATE: 既存テーブルのデータを削除してからインポート
REPLACE: 既存テーブルを削除して再作成してからインポート

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