大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

SQL*LoaderとOracle DatePump2

著者:伊関星児
公開日:2023/01/21
最終更新日:2023/01/21
カテゴリー:技術情報
タグ:

どうも、クローバーフィールドの伊関です。

 

なにやらブログのタイトルがゲームのナンバリングようですが、淡々とSQLのコードを解説していくだけなので悪しからず。

 

さて、前回SQL*LoaderとOracle DatePump、その拡張版のアクセスドライバORACLE_LOADERとORACLE_DATAPUMP。それとOracleデータベース内での外部表について軽くまとめました。

内容に関しては以下のリンクよりご確認ください。

https://www.cloverfield.co.jp/2023/01/17/sql%ef%bc%8aloader%e3%81%a8oracle-datepump/?preview=true

 

前回にもありますように外部表とは実体は外部ファイル内にあり、Oracleデータベース内には存在しません。要は仮想的に作られた表にすぎません。しかしこれがないと外部データの参照も、インポートもエクスポートもできません。

 

今回はその外部表を通してアクセスドライバを使用するやり方を説明します。

 

ORACLE_LOADERアクセスドライバの外部表の例

SQL> CREATE TABLE exttbl (no          NUMBER(4)

name       VARCHAR2(10)

)

ORGANIZATION EXTERNAL

(

TYPE ORACLE_LOADER

DEFAULT DIRECTORY TEST_DIR

ACCESS PARAMETERS

(

fields terminated by ‘,’

)

LOCATION(‘data.csv’)

);

 

表が作成されました。

 

SQL> SELECT * FROM exttbl;

NO NAME

———- ————–

2              horie

8              leitch

15            goromaru

 

 

このようなコードを書くことで外部にあるCSVファイルを読み込み、SELECTで問合せできる外部表を作成することが出来ます。

外部表を作成するCREATE TABLE文のTYPEの指定「TYPE ORACLE_LOADER」の部分は省略でき、ORACLE_LOADERアクセスドライバを指定したことになります。

以下が用語の解説です。

 

・ORGANIZATION EXTERNAL

外部表を作成するための句です。

 

・TYPE

外部表には主に2つの型があり、アクセスドライバ(外部データを解析するAPI)によってサポートされます。

・ORACLE_LOADER:テキスト形式の外部ファイルのデータをロードする(読み込む)。デフォルト値

・ORACLE_DATAPUMP:既存の表のデータをバイナリ形式のダンプファイルにアンロード(書き込む)、ダンプファイルのデータをデータベースにロードする(読み込む)

 

設問のデータソースはテキストファイルなのでORACLE_LOADERを使用しますが、ORACLE_LOADERはデフォルト値なので省略できます。

 

・DEFAULT DIRECTORY

デフォルトで使用するディレクトリを、ディレクトリのパスではなくディレクトリオブジェクトとして指定します。LOCATION句のデータファイルやACCESS PARAMETERS句のログファイルなどのディレクトリオブジェクトを省略した場合に使用されます。DEFAULT DIRECTORYのデフォルト値は無ければ、省略できません。

 

・ACCESS PARAMETERS

データソースのレコードやフィールド形式などの情報を指定します。

– RECORDSパラメータ

DELIMITED BY:レコードの区切り文字の指定。デフォルト値は改行を示す「NEWLINE」

 

– FIELDSパラメータ

TERMINATED BY:フィールドの区切り文字の指定。デフォルト値は「’」

OPTIONALLY ENCLOSED BY:囲み文字の指定。デフォルト値は「”」

(列名 データ型):データソースの列名とデータ型の指定。省略した場合、区切り文字付きの列はCHAR(255)となる

 

・LOCATION

外部のデータファイルを指定します。デフォルト値は無いので省略できません。

 

・REJECT LIMIT

外部データの問い合わせで許容される変換エラーの数を指定します。デフォルト値は0なので省略できます。

 

ざっとの解説になりました。

なにぶん自分がまとめに書いてるものになりますので多少読みづらいのはご愛嬌ということで。

 

では

 

 

 

    上に戻る