Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

SQL*Loader issue with NULLIF

rahulrasJun 3 2008 — edited Jul 25 2008

Hi all,

I am trying to use following control file,

LOAD DATA
INFILE *
REPLACE
INTO TABLE T1
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
OBJECT_NAME           CHAR              NULLIF OBJECT_NAME = "NULL" ,
SUBOBJECT_NAME        CHAR              NULLIF SUBOBJECT_NAME = "NULL" ,
OBJECT_ID             DECIMAL EXTERNAL  NULLIF OBJECT_ID = "NULL" ,
DATA_OBJECT_ID        DECIMAL EXTERNAL  NULLIF DATA_OBJECT_ID = "NULL" ,
OBJECT_TYPE           CHAR              NULLIF OBJECT_TYPE = "NULL" ,
CREATED               DATE  "DD/MM/YYYY HH24:MI:SS" NULLIF CREATED = "NULL" ,
LAST_DDL_TIME         DATE  "DD/MM/YYYY HH24:MI:SS" NULLIF LAST_DDL_TIME = "NULL" ,
TIMESTAMP             CHAR              NULLIF TIMESTAMP = "NULL" ,
STATUS                CHAR              NULLIF STATUS = "NULL" ,
TEMPORARY             CHAR              NULLIF TEMPORARY = "NULL" ,
GENERATED             CHAR              NULLIF GENERATED = "NULL" ,
SECONDARY             CHAR              NULLIF SECONDARY = "NULL"
)

I am getting error,

SQL*Loader-350: Syntax error at line 21.
Expecting positive integer or column name, found keyword timestamp.
                            CHAR  NULLIF TIMESTAMP = "NULL" ,
STATUS

The file I am trying to load is a pipe delimited file and has a string "NULL" for NULL values. So, I have added NULLIF for all columns.
Interesting thing is, Oracle allows us to have column names like TIMESTAMP or GENERATED, but I use it in the NULLIF clause, it is effectively syntax error.

The table I am using is like this (it is same as user_objects view),

SQL> desc t1
 Name                          Null?    Type
 ----------------------------- -------- --------------
 OBJECT_NAME                            VARCHAR2(128)
 SUBOBJECT_NAME                         VARCHAR2(30)
 OBJECT_ID                              NUMBER
 DATA_OBJECT_ID                         NUMBER
 OBJECT_TYPE                            VARCHAR2(19)
 CREATED                                DATE
 LAST_DDL_TIME                          DATE
 TIMESTAMP                              VARCHAR2(19)
 STATUS                                 VARCHAR2(7)
 TEMPORARY                              VARCHAR2(1)
 GENERATED                              VARCHAR2(1)
 SECONDARY                              VARCHAR2(1)

If I remove the NULLIF clause for columns, timestamp and generated, there is no problem, the control file works fine.

How can I get around this problem ?

Thanks in advance

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 22 2008
Added on Jun 3 2008
1 comment
1,451 views