Skip to Main Content
  • Questions
  • ORA-01400: cannot insert NULL into ( blob )

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Stanislav.

Asked: May 10, 2017 - 8:04 am UTC

Last updated: May 11, 2017 - 3:03 am UTC

Version: Oracle database server 12C

Viewed 1000+ times

You Asked

Hello Tom,

I have table with two column, this is sql code :

CREATE TABLE AVR_xml
(
x_xml NUMBER(10) GENERATED BY DEFAULT ON NULL AS IDENTITY NOT NULL,
xml BLOB NOT NULL
)
STORAGE (INITIAL 101204K NEXT 9200K) TABLESPACE "EX_DBS"
LOB (xml) STORE AS BASICFILE ( TABLESPACE "EX_VR_SBS" );

I want load unload, whitch contains path to blob file, here is two rows from unload

1240|/home/zaved/NTT_PREV/ZAVED/VREXDB/UNL/avr_xml.1_1240.1.blob|
1200|/home/zaved/NTT_PREV/ZAVED/VREXDB/UNL/avr_xml.1_1200.1.blob|

and blob files exists in path

-rw-r--r-- 1 zaved uziv_dis 2467 7 apr 16:08 /home/zaved/NTT_PREV/ZAVED/VREXDB/UNL/avr_xml.1_1200.1.blob
-rw-r--r-- 1 zaved uziv_dis 583 8 apr 20:05 /home/zaved/NTT_PREV/ZAVED/VREXDB/UNL/avr_xml.1_1240.1.blob

When I make load by sqlldr, it finished with error

value used for ROWS parameter changed from 5000 to 711
Record 1: Rejected - Error on table AVR_XML, column XML.
ORA-01400: Cannot insert NULL into ("ZAVED"."AVR_XML"."XML")

Record 2: Rejected - Error on table AVR_XML, column XML.
ORA-01400: Cannot insert NULL into ("ZAVED"."AVR_XML"."XML")

Why it seems to sqlldr blobs are null ?

My control file :

LOAD DATA
INFILE '/home/zaved/NTT_PREV/ZAVED/VREXDB/UNL/avr_xml.unl.1' "str '|\n'"
BADFILE '/home/zaved/NTT_PREV/ZAVED/VREXDB//BAD/avr_xml.bad.1'
DISCARDFILE '/home/zaved/NTT_PREV/ZAVED/VREXDB//DSC/avr_xml.dsc.1'
APPEND
INTO TABLE avr_xml
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
X_xml,
XML_filename FILLER CHAR(100),
XML LOBFILE(XML_filename) TERMINATED BY EOF NULLIF XML=BLANKS
)

Very Thank You for answer.

and Connor said...

Remove the NULLIF XML=BLANKS, eg

LOAD DATA
INFILE '/home/zaved/NTT_PREV/ZAVED/VREXDB/UNL/avr_xml.unl.1' "str '|\n'"
BADFILE '/home/zaved/NTT_PREV/ZAVED/VREXDB//BAD/avr_xml.bad.1'
DISCARDFILE '/home/zaved/NTT_PREV/ZAVED/VREXDB//DSC/avr_xml.dsc.1'
APPEND
INTO TABLE avr_xml
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
X_xml,
XML_filename FILLER CHAR(100),
XML LOBFILE(XML_filename) TERMINATED BY EOF NULLIF XML=BLANKS
)



should do it

Is this answer out of date? If it is, please let us know via a Comment

More to Explore

CLOB/BLOB/etc

Complete documentation on Securefiles and Large Objects here