Вот пример;посмотрим, поможет ли это.
Сначала проверьте таблицу и функцию, которая проверяет, является ли значение параметра числом или нет.Он будет использоваться в контрольном файле.
SQL> create table test (pathid number, name varchar2(20));
Table created.
SQL> create or replace function f_isnum (par_value in varchar2)
2 return varchar2
3 is
4 -- if PAR_VALUE is a number, return Y. Otherwise, return N
5 begin
6 return case when regexp_like(par_value, '^\d+$') then 'Y' else 'N' end;
7 end;
8 /
Function created.
SQL>
Контрольный файл, который также содержит некоторые примеры данных.Проверьте поле PATHID
, в котором используется ранее созданная функция.
load data
infile *
replace
into table test
fields terminated by "|" TRAILING NULLCOLS
(
pathid integer external "case when f_isnum(:pathid) = 'Y' then :pathid else null end",
name)
begindata
123|Littlefoot
xxx|Invalid one
125|This is OK
Проверка:
SQL> $sqlldr scott/tiger control=test07.ctl log=test07.log
SQL*Loader: Release 11.2.0.2.0 - Production on Pon Svi 6 18:41:12 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 2
Commit point reached - logical record count 3
SQL> select * From test;
PATHID NAME
---------- --------------------
123 Littlefoot
Invalid one
125 This is OK
SQL>