Sqlldr to upload data doesn't work correctly and loads data into different columns

120 Views Asked by At

I am trying to load data from a csv to oracle table but it doesn't seem to work correctly. I am having issue in data mapping with columns. Data is getting into the wrong columns in the table and due to this the whole load is not successful.

Thanks, Aditya

I tried to upload the sample data file with the shell script and the data loads into wrong columns and therefore fails due to data type mismatch.

Table details

CATEGORY                 VARCHAR2(50)   
START_DATE               DATE           
USER_ID                  NUMBER         
FIRST_NAME               VARCHAR2(50)   
LAST_NAME                VARCHAR2(50)   
FULL_NAME                VARCHAR2(100)  
USERNAME                 VARCHAR2(30)   
BUSINESS_TITLE           VARCHAR2(1000) 
MANAGER_ID               VARCHAR2(30)   
MANAGER                  VARCHAR2(100)  
USER_LOCATION            VARCHAR2(100)  
ROLE_ID                  NUMBER         
ROLE_NAME                VARCHAR2(100)  
REG_TEMP                 VARCHAR2(50)   
REG_REGION               VARCHAR2(100)  
TG                       VARCHAR2(100)  
SUBTEAM                  VARCHAR2(100)  
FTE                      NUMBER(8)      
EMPLID                   VARCHAR2(30)   
EMPL_STATUS              VARCHAR2(30)   
DEPTNAME                 VARCHAR2(100)  
HIRE_DT                  DATE           
TERMINATION_DT           DATE           
SKILL_NAME               VARCHAR2(1000) 
PROJECT_ID               VARCHAR2(50)   
CREATED_BY_USER_ID       VARCHAR2(30)   
DEMAND_START             DATE           
DEMAND_END               DATE           
PROJECT_TITLE            VARCHAR2(500)  
PROJECT_TYPE             VARCHAR2(200)  
PROJECT_STATUS           VARCHAR2(100)  
PROJECT_KEY              VARCHAR2(100)  
EMPLID1                  VARCHAR2(30)   
MANAGER_NAME             VARCHAR2(100)  
MANAGER_ID1              VARCHAR2(30)   
LVL                      NUMBER         
JIRA_DOMAIN              VARCHAR2(200)  
DEPTID                   VARCHAR2(25)   
JOB_TITLE                VARCHAR2(200)  
USER_ROLE                VARCHAR2(100)  
PREFERRED_NAME           VARCHAR2(100) 

shell script

#!/bin/bash
# Set the Oracle environment variables
export ORACLE_HOME=/usr/software/test/oracle
export PATH=$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
# Set the Oracle connection details
#export ORACLE_SID=<sid>
export ORACLE_USER=<uname>
export ORACLE_PASSWORD=<pwd>
export ORACLE_HOST=<host>
export ORACLE_PORT=1521
export ORACLE_SERVICE_NAME=<sname>

#log files
ldlogfile=rm_data_load.log
ldprcs_fl=rm_data_log.log

# Set the CSV file path and table name
CSV_FILE=/u/mmanogya/baz.csv
TABLE_NAME=<tablename>
# Create the control file for SQL*Loader
CONTROL_FILE=sqlldr_control.ctl

# Run SQL*Loader to load the CSV file
echo sqlldr $ORACLE_USER/$ORACLE_PASSWORD@$ORACLE_HOST:$ORACLE_PORT/$ORACLE_SERVICE_NAME control=$CONTROL_FILE
sqlldr $ORACLE_USER/$ORACLE_PASSWORD@$ORACLE_HOST:$ORACLE_PORT/$ORACLE_SERVICE_NAME control=$CONTROL_FILE log=$ldlogfile >$ldprcs_fl 2>&1

control file

OPTIONS (DIRECT=TRUE, SILENT=(HEADER,FEEDBACK,DISCARDS,PARTITIONS))
LOAD DATA
INFILE 'baz.csv'
INSERT
INTO TABLE tablename
FIELDS TERMINATED BY ','
optionally enclosed by '"' 
TRAILING NULLCOLS
(
CATEGORY char OPTIONALLY ENCLOSED BY '"',  
START_DATE DATE "YYYY-MM-DD", 
USER_ID,       
FIRST_NAME char OPTIONALLY ENCLOSED BY '"',
LAST_NAME char OPTIONALLY ENCLOSED BY '"', 
FULL_NAME char OPTIONALLY ENCLOSED BY '"',  
USERNAME char,
BUSINESS_TITLE char OPTIONALLY ENCLOSED BY '"',
MANAGER_ID char,
MANAGER char OPTIONALLY ENCLOSED BY '"',
USER_LOCATION char OPTIONALLY ENCLOSED BY '"',
ROLE_ID,
ROLE_NAME char OPTIONALLY ENCLOSED BY '"',
REG_TEMP char OPTIONALLY ENCLOSED BY '"',
REG_REGION char OPTIONALLY ENCLOSED BY '"',  
TG char OPTIONALLY ENCLOSED BY '"',
SUBTEAM char,
FTE,
EMPLID char,
EMPL_STATUS char OPTIONALLY ENCLOSED BY '"',
DEPTNAME char OPTIONALLY ENCLOSED BY '"',
Y FILLER,
Z FILLER,
SKILL_NAME char OPTIONALLY ENCLOSED BY '"',
PROJECT_ID char OPTIONALLY ENCLOSED BY '"',
CREATED_BY_USER_ID char,
A FILLER,
B FILLER,
PROJECT_TITLE char OPTIONALLY ENCLOSED BY '"',
PROJECT_TYPE char OPTIONALLY ENCLOSED BY '"',
PROJECT_STATUS char OPTIONALLY ENCLOSED BY '"',
PROJECT_KEY char OPTIONALLY ENCLOSED BY '"',
EMPLID1 char,
MANAGER_NAME char,
MANAGER_ID1 char,
LVL,
JIRA_DOMAIN char OPTIONALLY ENCLOSED BY '"',
DEPTID char,
JOB_TITLE char OPTIONALLY ENCLOSED BY '"',
USER_ROLE char OPTIONALLY ENCLOSED BY '"',
PREFERRED_NAME char OPTIONALLY ENCLOSED BY '"'
)

error log


SQL*Loader: Release 11.2.0.3.0 - Production on Wed May 17 23:38:00 2023

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Control File:   sqlldr_control.ctl
Data File:      baz.csv
  Bad File:     baz.bad
  Discard File:  none specified
 
 (Allow all discards)

Number to load: ALL
Number to skip: 0
Errors allowed: 50
Continuation:    none specified
Path used:      Direct
Silent options: FEEDBACK and DISCARDS

Table PPM_RM_REPORTING_TMP, loaded from every logical record.
Insert option in effect for this table: INSERT
TRAILING NULLCOLS option in effect

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
CATEGORY                            FIRST     *   ,  O(") CHARACTER            
START_DATE                           NEXT     *   ,  O(") DATE YYYY-MM-DD      
USER_ID                              NEXT     *   ,  O(") CHARACTER            
FIRST_NAME                           NEXT     *   ,  O(") CHARACTER            
LAST_NAME                            NEXT     *   ,  O(") CHARACTER            
FULL_NAME                            NEXT     *   ,  O(") CHARACTER            
USERNAME                             NEXT     *   ,  O(") CHARACTER            
BUSINESS_TITLE                       NEXT     *   ,  O(") CHARACTER            
MANAGER_ID                           NEXT     *   ,  O(") CHARACTER            
MANAGER                              NEXT     *   ,  O(") CHARACTER            
USER_LOCATION                        NEXT     *   ,  O(") CHARACTER            
ROLE_ID                              NEXT     4           INTEGER              
ROLE_NAME                            NEXT     *   ,  O(") CHARACTER            
REG_TEMP                             NEXT     *   ,  O(") CHARACTER            
REG_REGION                           NEXT     *   ,  O(") CHARACTER            
TG                                   NEXT     *   ,  O(") CHARACTER            
SUBTEAM                              NEXT     *   ,  O(") CHARACTER            
FTE                                  NEXT     4           PACKED DECIMAL (7, 2)
EMPLID                               NEXT     *   ,  O(") CHARACTER            
EMPL_STATUS                          NEXT     *   ,  O(") CHARACTER            
DEPTNAME                             NEXT     *   ,  O(") CHARACTER            
Y                                    NEXT     *   ,  O(") CHARACTER            
  (FILLER FIELD)
Z                                    NEXT     *   ,  O(") CHARACTER            
  (FILLER FIELD)
SKILL_NAME                           NEXT     *   ,  O(") CHARACTER            
PROJECT_ID                           NEXT     *   ,  O(") CHARACTER            
CREATED_BY_USER_ID                   NEXT     *   ,  O(") CHARACTER            
A                                    NEXT     *   ,  O(") CHARACTER            
  (FILLER FIELD)
B                                    NEXT     *   ,  O(") CHARACTER            
  (FILLER FIELD)
PROJECT_TITLE                        NEXT     *   ,  O(") CHARACTER            
PROJECT_TYPE                         NEXT     *   ,  O(") CHARACTER            
PROJECT_STATUS                       NEXT     *   ,  O(") CHARACTER            
PROJECT_KEY                          NEXT     *   ,  O(") CHARACTER            
EMPLID1                              NEXT     *   ,  O(") CHARACTER            
MANAGER_NAME                         NEXT     *   ,  O(") CHARACTER            
MANAGER_ID1                          NEXT     *   ,  O(") CHARACTER            
LVL                                  NEXT     4           INTEGER              
JIRA_DOMAIN                          NEXT     *   ,  O(") CHARACTER            
DEPTID                               NEXT     *   ,  O(") CHARACTER            
JOB_TITLE                            NEXT     *   ,  O(") CHARACTER            
USER_ROLE                            NEXT     *   ,  O(") CHARACTER            
PREFERRED_NAME                       NEXT     *   ,  O(") CHARACTER            

Record 1: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 2: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 3: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 4: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 5: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 6: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 7: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 8: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 9: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 10: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 11: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 12: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 13: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 14: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 15: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 16: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 17: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 18: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 19: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 20: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 21: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 22: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 23: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 24: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 25: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 26: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 27: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 28: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 29: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 30: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 31: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 32: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 33: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 34: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 35: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 36: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 37: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 38: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 39: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 40: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 41: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 42: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 43: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 44: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 45: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 46: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 47: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 48: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 49: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 50: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested

Record 51: Rejected - Error on table PPM_RM_REPORTING_TMP, column FTE.
ORA-01460: unimplemented or unreasonable conversion requested


MAXIMUM ERROR COUNT EXCEEDED - Above statistics reflect partial run.

Table PPM_RM_REPORTING_TMP:
  0 Rows successfully loaded.
  51 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.

  Date cache:
   Max Size:      1000
   Entries :         3
   Hits    :        49
   Misses  :         0

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 rejected:        51
Total logical records discarded:        0
Total stream buffers loaded by SQL*Loader main thread:        1
Total stream buffers loaded by SQL*Loader load thread:        1

Run began on Wed May 17 23:38:00 2023
Run ended on Wed May 17 23:38:37 2023

Elapsed time was:     00:00:37.49
CPU time was:         00:00:00.16

Data Set Below

enter image description here

1

There are 1 best solutions below

0
Gary_W On

I think you need to make this change to your control file:

FTE  decimal external,

Actually define all NUMBER columns decimal external.