Como bien dices, puedes utilizar la función NVL dentro del .CTL, y también asignar el valor de un campo en función de otro, por ejemplo:
Código:
SQL> create table t1 (id1 number(8), id2 number(8));
Tabla creada.
SQL> exit
Dentro del .CTL
Código:
LOAD DATA
INFILE *
REPLACE
INTO TABLE T1
FIELDS TERMINATED BY ","
( ID1,
ID2 "NVL(:ID1,100)"
)
BEGINDATA
1,2
,2
Llamada al SQL*Loader
Código:
C:\Temp>sqlldr user/pass@sid control=1.ctl
Finalmente el resultado de la tabla es ID2=100 cuando ID1 es NULL
Código:
SQL> select * from t1;
ID1 ID2
---------- ----------
1 1
100
Saludos