アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

前提として
次のようなctlファイルがあります。

OPTIONS(ROWS=500,BINDSIZE=700000)

LOAD DATA
INFILE '/home/oracle/TEST/00_BIN/YOSAN.csv'
TRUNCATE
INTO TABLE MT_YOSAN
(
日付 TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"',
店舗コード TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"',
予算 TERMINATED BY ',' NULLIF 昨年実績=BLANKS,
昨年実績 NULLIF 昨年実績=BLANKS
)

ロード対象のCSVですが、次のようなROWデータになります。

"2011/02/22","01010",30000,25000

テーブル仕様は次のようになっています。

日付      VARCHAR2(20) NOT NULL
店舗コード  VARCHAR2(20) NOT NULL
予算      NUMBER(10)
昨年実績   NUMBER(10)

これを実行した際に昨年実績のカラムに25000の先頭の2しかロードされません。
ログファイルを開くと他のLenは*に対して最後の昨年実績列は1が設定されていました。
この事象の原因と対処法がわかる方がいればご教示いただきたく存じます。
よろしくお願いいたします。

またsqlldr実行時は引数controlとlogのみ指定しています。

A 回答 (1件)

> 昨年実績 NULLIF 昨年実績=BLANKS


の項目長の指定がないためです。
CSVデータの場合は「TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'」の指定は項目単位に行う必要はあまりありません。
制御ファイルの内容を
OPTIONS(ROWS=500,BINDSIZE=700000)
LOAD DATA
INFILE '/home/oracle/TEST/00_BIN/YOSAN.csv'
TRUNCATE
INTO TABLE MT_YOSAN
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
(
日付,
店舗コード,
予算 NULLIF 昨年実績=BLANKS,
昨年実績 NULLIF 昨年実績=BLANKS
)
にすればロードできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A