4)dw sqlldr 1@@@@parallel sql*loading ~drop all index, ~diable all constraint and trigger. like: sqlldr USERID=sh/sh CONTROL=control03.ctl LOG=control03.log DIRECT=true SKIP_INDEX_MAINTENANCE=true &; sqlldr USERID=sh/sh CONTROL=control04.ctl LOG=control04.log DIRECT=true SKIP_INDEX_MAINTENANCE=true &; sqlldr USERID=sh/sh CONTROL=control05.ctl LOG=control05.log DIRECT=true SKIP_INDEX_MAINTENANCE=true &; ~reenable all constraint and trigger, create all index. ~summary: one partition for one process at the same time. without mess data, it is hard to make lab. 2@@@@transformations using sql*loader @@@ @@@<1>create table product like previously. @@@ HR@ocp> conn hr/hr Connected. HR@ocp> ed 1 create table product 2 ( 3 product_id varchar2(20), 4 product_name varchar2(20), 5 category varchar2(20), 6 cost_price number(9,2), 7 sell_price number(9,2), 8 weight number(9,2), 9 shipping_charge number(9,2), 10 manufacturer varchar2(20), 11 supplier varchar2(20) 12* ) HR@ocp> / Table created. @@@ @@@<2>write control file, add the transformation @@@ [oracle@station78 dwdir]$ cat control04.ctl LOAD DATA INFILE 'product04.dat' append INTO TABLE product WHEN product_id != BLANKS FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'" ( product_id "upper(:product_id)", product_name, category, cost_price, weight, shipping_charge, manufacturer, supplier ) @@@ @@@<3>write the test data @@@ [oracle@station78 dwdir]$ cat product04.dat 'SP1242', 'CD LX1', 'MUSC', 8.90, 15.67, 2.5, 2.95, 'RTG', 'CD Inc' 'SP1243', 'CD LX2', 'MUSC', 8.91, 15.68, 2.6, 2.97, 'RTG', 'CD Inc' 'SP1244', 'CD LX3', 'MUSC', 8.92, 15.69, 2.7, 2.99, 'RTG', 'CD Inc' 'SP1245', 'CD LX4', 'MUSC', 8.93, 15.70, 2.8, 2.93, 'RTG', 'CD Inc' 'BLANKS', 'CD LX5', 'MUSC', 8.93, 15.70, 2.1, 2.93, 'RTG', 'CD Inc' ' ', 'CD LX6', 'MUSC', 8.95, 15.74, 2.9, 2.93, 'RTG', 'CD Inc' @@@ @@@<4>run the sqlldr, and inspect the result. @@@ [oracle@station78 dwdir]$ sqlldr USERID=hr/hr CONTROL=control04.ctl LOG=product04.log \ > BAD=product.bad DISCARD=product.dis DIRECT=true; SQL*Loader: Release 10.2.0.1.0 - Production on Thu Aug 23 14:10:08 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Load completed - logical record count 7. @@@ [oracle@station78 dwdir]$ cat product.dis ' ', 'CD LX6', 'MUSC', 8.95, 15.74, 2.9, 2.93, 'RTG', 'CD Inc' @@@ [oracle@station78 dwdir]$ cat product04.log SQL*Loader: Release 10.2.0.1.0 - Production on Thu Aug 23 13:56:46 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Control File: control04.ctl Data File: product04.dat Bad File: product.bad Discard File: product.dis (Allow all discards) Number to load: ALL Number to skip: 0 Errors allowed: 50 Continuation: none specified Path used: Direct Table PRODUCT, loaded when PRODUCT_ID != BLANKS Insert option in effect for this table: APPEND Column Name Position Len Term Encl Datatype ------------------------------ ---------- ----- ---- ---- --------------------- PRODUCT_ID FIRST * , O(') CHARACTER SQL string for column : "upper(:product_id)" PRODUCT_NAME NEXT * , O(') CHARACTER CATEGORY NEXT * , O(') CHARACTER COST_PRICE NEXT * , O(') CHARACTER WEIGHT NEXT * , O(') CHARACTER SHIPPING_CHARGE NEXT * , O(') CHARACTER MANUFACTURER NEXT * , O(') CHARACTER SUPPLIER NEXT * , O(') CHARACTER Record 6: Discarded - failed all WHEN clauses. Record 7: Discarded - failed all WHEN clauses. Table PRODUCT: 5 Rows successfully loaded. 0 Rows not loaded due to data errors. 2 Rows not loaded because all WHEN clauses were failed. 0 Rows not loaded because all fields were null. Bind array size not used in direct path. Column array rows : 5000 Stream buffer bytes: 256000 Read buffer bytes: 1048576 Total logical records skipped: 0 Total logical records read: 7 Total logical records rejected: 0 Total logical records discarded: 2 Total stream buffers loaded by SQL*Loader main thread: 1 Total stream buffers loaded by SQL*Loader load thread: 0 Run began on Thu Aug 23 13:56:46 2012 Run ended on Thu Aug 23 13:56:47 2012 Elapsed time was: 00:00:00.53 CPU time was: 00:00:00.03 @@@ @@@summary: Here, I write the WHEN clause in the control file, the bad file after running sqlldr @@@do not appear, the discard file appear instead. I am not sure the BLANKS mean a word or a char.