Oracle 外部テーブルの使用
Oracle 外部テーブルは、データベースにないデータのテーブルです。代わりに、データはデータベースがアクセスできる外部ファイルにあります。外部テーブルを使用して、データベースにロードしないでデータにアクセスできます。外部テーブルの詳細については、Oracle ドキュメントの「外部表の管理
Amazon RDS では、外部テーブルファイルをディレクトリオブジェクトに保存できます。ディレクトリオブジェクトは、新規作成するか、Oracle データベースに定義済みのもの (DATA_PUMP_DIR ディレクトリなど) を使用できます。ディレクトリオブジェクトの作成方法については、「主要データストレージ領域でのディレクトリの作成と削除」を参照してください。Amazon RDS Oracle DB インスタンスのディレクトリオブジェクトを一覧表示するには、ALL_DIRECTORIES ビューをクエリできます。
注記
ディレクトリオブジェクトは、インスタンスで使用されているメインのデータストレージ領域 (Amazon EBS ボリューム) を参照します。データファイル、REDO ログ、監査、追跡、およびその他のファイルで使用される領域は、割り当てられたストレージの消費としてカウントされます。
外部データファイルを Oracle データベース間で移行するには、DBMS_FILE_TRANSFER
移行した外部データファイルを使用して、外部テーブルを作成できます。次の例では、USER_DIR1 ディレクトリの emp_xt_file1.txt
ファイルを使用する外部テーブルを作成します。
CREATE TABLE emp_xt ( emp_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), user_name VARCHAR2(20) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY USER_DIR1 ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL (emp_id,first_name,last_name,user_name) ) LOCATION ('emp_xt_file1.txt') ) PARALLEL REJECT LIMIT UNLIMITED;
Amazon RDS Oracle DB インスタンスにあるデータを外部データファイル内に移行するとします。この場合、外部テーブルを作成し、データベースのテーブルから選択したデータを外部データファイルに入力できます。例えば、次の SQL ステートメントでは、データベースの orders_xt
テーブルをクエリすることで orders
外部テーブルを作成します。
CREATE TABLE orders_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION ('orders_xt.dmp') ) AS SELECT * FROM orders;
この例では、データは DATA_PUMP_DIR ディレクトリの orders_xt.dmp
ファイルに入力されます。