Во-первых, вам нужно указать маску формата даты внутри одинарных кавычек, а не двойных.
Во-вторых, и это довольно запутанно, неверный формат, указанный вами для столбца «СУММА». Когда вы говорите, что данные «DECIMAL», вы фактически указываете двоичный формат во входном файле. Вы должны указать символ для определений FIELD в параметрах доступа и позволить Oracle преобразовать поле в числовое значение. Я очень редко (если вообще когда-либо) использую какой-либо формат, кроме CHAR, для описания входных данных либо в SQL * Loader, либо во внешних таблицах. Тем не менее, вы все равно застряли здесь, потому что я не думаю, что вы можете указать десятичный символ (',' в вашем случае) в определении внешней таблицы. Вы можете изменить его только через параметры экземпляра NLS.
Вот что я сделал (примечание: база данных 10g), чтобы ваш пример работал:
CREATE TABLE TABLE_EXT ( "COMPANY" VARCHAR2(101)
, "COMPANY_VN" VARCHAR2(15)
, "IL" VARCHAR2(17)
, "TERMINAL" VARCHAR2(8)
, "T_NO" VARCHAR2(15)
, "NAME" VARCHAR2(108)
, "SNAME" VARCHAR2(50)
, "REF_NO" VARCHAR2(23)
, "AMOUNT" NUMBER(15,2)
, "DATE_M" DATE
, "TIME_M" VARCHAR2(11)
, "TEL_NO" VARCHAR2(25)
, "ADDRESS" VARCHAR2(50) )
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY external_tables
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY '|'
MISSING FIELD VALUES ARE NULL
( COMPANY
, COMPANY_VN
, IL
, TERMINAL
, T_NO
, NAME
, SNAME
, REF_NO
, AMOUNT
, DATE_M CHAR date_format DATE mask 'dd.mm.yyyy'
, TIME_M
, TEL_NO
, ADDRESS ) )
LOCATION ('TABLE_EXT.txt') )
REJECT LIMIT 10 ;
Я немного изменил ваши данные, чтобы изменить десятичный знак на «.» в данных:
CITY HOSPITAL|04680072124|CITY|00614860|47746244218|JOHN|WHITE|172871|420.12|21.08.2011|14:26|0806422627784|06
CITY HOSPITAL|04680072124|CITY|00614847|14274017676|BRAD|BROWN|448127|810.00|22.08.2011|11:04|0806427488476|06
CITY HOSPITAL|04680072124|CITY|00614842|16218778886|PETER|BALSON|862626|12.00|24.08.2011|14:16|0806062177008|06
CITY HOSPITAL|04680072124|CITY|00614846|14607666866|GEORGE|LOUIS|688811|40.10|24.08.2011|08:48|0806424172468|06
CITY HOSPITAL|04680072124|CITY|00614846|14607666866|GEORGE|LOUIS|460481|42.64|24.08.2011|08:47|0806424172468|06
CITY HOSPITAL|04680072124|CITY|00614860|18460662462|JR|TEPE|404622|44,16|22.04.2011|20:08|0806446446866|06
CITY HOSPITAL|04680072124|CITY|00614840|47207688618|BARRY|HRAN|402886|42.40|27.08.2011|11:12|0806478768007|06
CITY HOSPITAL|04680072124|CITY|00614847|42161048612|TOM|HIGGS|148640|12.00|06.06.2011|08:18|0806068076700|06
CITY HOSPITAL|04680072124|CITY|00614846|42161048612|TOM|HIGGS|208847|12.00|06.06.2011|08:46|0806068076700|06
Это сработало для меня.
Итог, я думаю, вам нужно (1) изменить ваши данные, (2) изменить параметры NLS вашего экземпляра, чтобы изменить десятичный символ, или (3) загрузить ваши данные как символ и использовать функцию TO_NUMBER в представлении в верхней части внешнего стола.