I have to load the data file(test.dat) into a table named "Test", data file(test.dat) contains 1278684 records.
Even though sql loader(with option direct=true) loaded the all 1278684 records into the table, but the log file created by the sql loader gives the information that it loaded only 1277988 records.
Below is the some of the information from log:
"1277988 Rows successfully loaded."
"0 Rows not loaded due to data errors."
"Total logical records read: 1278684"

when i removed the direct option then the log file created by sql loader is proper,as follows:

Back in 9i, there were some things that happened out of order with the nvl function in SQL*Loader direct load that produced strange results. It would try to validate constraints and such prior to applying the nvl. Try eliminating the nvl function, since it is useless with a null value anyhow, and see what you get.