Sqlldrを使用して、フィールドの1つとして数値を持つファイルをロードしています。
問題は、いくつかのレコードでは数値にコンマが含まれているが、他のレコードでは含まれていないことです。
だから何かのようなこと
num "to_number(:num, '999,999,999.99')",
コンマを使用してレコードをロードしますが、コンマを使用せずに
num "to_number(:num)",
コンマなしのものだけをロードします。
Oracle(sqlldr)にコンマがオプションであることを伝える方法はありますか?
どうぞ:
SQL> desc loadertst;
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NUMBER
SQL> !cat loadertst.ctl
load data
infile *
into table loadertst
fields terminated by ',' enclosed by '"'
(
col1 "to_number(replace(:col1,',',''))"
)
begindata
"123456"
"1,2,3,4,5,6"
SQL> !sqlldr phil/phil control=loadertst.ctl
SQL*Loader: Release 11.2.0.2.0 - Production on Thu Nov 29 23:33:17 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 2
SQL> select count(*) from loadertst;
COUNT(*)
----------
2
SQL>
データに合わせてfields terminated by ',' enclosed by '"'
部分をいじる必要があることは明らかです。