0

顧客情報のテーブルをデータベースにインポートしたいと考えています。データファイル(プレーンテキスト)の構造を以下に簡単に示します。

"Cust_ID    Cust_Name   Level"
"0001   Eric Cartman    05"
"0002   Kyle Broflovski 02"

で囲まれた各行"がレコードで、区切り文字はタブです。したがって、SQL ローダー制御ファイルには、次のように記述します。

FIELDS TERMINATED BY '  '
    (Cust_ID, --?????
     Cust_Name,
     Level TERMINATED BY '"' )

"SQL ローダーに each の前を無視するように指示したいと思いますCust_ID。ここに何を追加すればよいですか? ありがとうございました。

4

1 に答える 1

1

フィラー フィールドを使用して、レコードの先頭にある二重引用符を無視できます。これはquote、最初の で終了する名目上呼び出したフィラー フィールドを定義し"ます。

options (skip=1)
load data
truncate into table t42
fields terminated by '  '
(
    quote filler terminated by '"',
    cust_id,
    cust_name,
    cust_level terminated by '"'
)

この場合、そのフィールドの値はquotenull になりますが、とにかく無視しているので、それは重要ではありません。

次のように定義されたテーブルとしてのデータファイルを使用します。

create table t42(cust_id number, cust_name varchar2(20), cust_level number);

... データは次のように挿入されます。

select * from t42;

   CUST_ID CUST_NAME            CUST_LEVEL
---------- -------------------- ----------
         1 Eric Cartman                  5
         2 Kyle Broflovski               2

は予約語であるcust_levelため、3 番目の列を呼び出しました。level強制的に使用することはできますが、最終的には苦痛になります。また、使用したことに注意truncateしてください。これにより、テーブル内の既存のデータが置き換えられます。新しいデータを追加する場合は、それを に変更しappendます。

于 2013-10-06T08:56:31.280 に答える