| Oracle | SQL*Loaderミニミニメモ | |
| 2002/01/10 - 2005/04/15 |
| タブ区切りデータ用の制御ファイル例 | |
|
Loader制御ファイルでタブ文字を表すには X'09' とします。以下が例です。
列の名前に続けてデータ型、その後にダブルクォートで囲んで SQL関数式を書くことができます。その式の中で「:列名」とすると、列参照を行うことができます。 また、"CDATE"の定義のように、DATE型のカラムで書式が決まっている場合には、 書式を二重引用符で囲んで表現します。 その上の"DDATE"の定義は分かりにくいですがこれはCHAR2(8)のカラムです。 データファイルにYYYY-MM-DDの文字列で書かれているのを、 セットされていたらYYYYMMDDに変換して、そうでなければ空白をセットします。 | |
| タブ区切りとNULL | |
|
タブ区切りテキストでNULLデータがある場合、タブ文字が複数個連続します。 しかし、このとき「OPTIONALLY ENCLOSED BY」句をつけていると、 複数個のタブが1個と認識され、データが足りないというエラーになります。 NULLを取り得るカラムと引用符で囲まれる可能性があるカラムが完全に別の場合は、 OPTIONALLY ENCLOSED BY句を必要なカラムにだけつけるとOKです。
| |
| カンマを含む数値データ | |
|
もうひとつ、よくある例が、Excelなどでタブ区切りテキストを作成するときに、 数値データを3桁毎にカンマで区切っている例です。このような場合は、 カラムの定義を次のようにします。
| |
| カンマ区切りデータ用の制御ファイル例 | |
|
カンマ区切りでも基本は同じです。 今度の例ではREPLACEの代わりにAPPENDを使っているので、 既存の行は削除せず追加しようとします。 「PRESERVE BLANKS」はカンマの前後の空白も削除せずに、 データの一部とみなす指令です。
| |
| 固定長データ用の制御ファイル例 | |
|
最後に固定長の場合です。下のように、
数値はZONED、文字列はCHARなどを使います。 日時型は上のように、書式を添えて指定することになるでしょう。 定数はCONSTANT句で定義できます。 | |
| 文字コードについて | |
|
SQL*Loaderのデータファイルの文字コードは、環境変数NLS_LANGで制御できます。 ですから、内部コードが日本語EUCのOracleデータベースに、 シフトJISのデータファイルからデータを投入することも可能です。 UNIX上のOracleで注意が必要なのは改行コードです。 データファイルの改行コードがCR+LF(Win32形式)だと、 うまくいきません。FTPの際に必ず改行コードをLF(UNIX形式) に変換しておく必要があります。 | |
| 日付データ | |
|
SQL*Loaderで固定の日付や現在の日時をカラムにセットするには、 次のようにします。"CHAR" が分かりづらいですね。
| |
| 初期値を設定する | |
|
特定のカラムの値がNULLの場合に、初期値を自動的に設定する DEFAULT句のようなものはありませんが、 DECODE句を使ってそのような機能を実現することはできます。
|
| もくじ | ||
| Oracle | (C) 2002 Project Radkraft ( MISUMI URANO ) |