I have text delimited file and try to insert to oracle database use sql loader. The content of my file like this.
According to mathguy reply, this is the full of my text file content
store | datetime | termnmbr | transnmbr | mdesc | mediaamnt | accountnmbr
305 | 12/07/16 10:07 | 1 |6070000449 | CASH | 50000 |
305 | 12/07/16 10:07 | 1 |6070000448 | CASH | 100000 |
305 | 12/07/16 10:07 | 1 |6070000447 | CASH | 50000 |
305 | 12/07/16 10:07 | 1 |6070000445 | CASH | 209000 |
305 | 12/07/16 12:07 | 1 |6070000430 | CASH | 100000 |
305 | 12/07/16 12:07 | 1 |6070000429 | CASH | 50000 |
(6 rows)
My control file
OPTIONS (SILENT=(FEEDBACK),SKIP=1)
LOAD DATA
INFILE *
APPEND
INTO TABLE "MKG_MED_N"
WHEN (1:1) <> '('
FIELDS TERMINATED BY "|"
TRAILING NULLCOLS
(
STORE_CODE,
TRANS_DATE "to_date(:TRANS_DATE, 'DD/MM/YY HH24:MI')",
POS_NO,
TRANS_NO "substr(trim(:TRANS_NO),1,10)",
MED_DESC "trim(:MED_DESC)",
MED_AMOUNT,
MED_ACC_NO "trim(TRANSLATE (:MED_ACC_NO, 'x'||CHR(10)||CHR(13), 'x'))",
)
The problem is, i've got error
Record 2: Rejected - Error on table "MKG_MED_N", column TRANS_NO.
ORA-01438: value larger than specified precision allowed for this column.
This come from log file as asked by Arkadiusz Łukasiewicz
SQL*Loader: Release 11.2.0.1.0 - Production on Wed Jul 13 14:35:43 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Control File: /u07/mkg/script/MkgMed20160712.305.ctl
Data File: /u07/mkg/1607/MkgMed20160712.305
Bad File: /u07/mkg/bad/MkgMed20160712.305.bad
Discard File: /u07/mkg/discard/MkgMed20160712.305.dis
(Allow all discards)
Number to load: ALL
Number to skip: 1
Errors allowed: 999
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Silent options: FEEDBACK
Table "MKG_MED_N", loaded when 1:1 != 0X28(character '(')
Insert option in effect for this table: APPEND
TRAILING NULLCOLS option in effect
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
STORE_CODE FIRST * | CHARACTER
TRANS_DATE NEXT * | CHARACTER
SQL string for column : "to_date(:TRANS_DATE, 'DD/MM/YY HH24:MI')"
POS_NO NEXT * | CHARACTER
TRANS_NO NEXT * | CHARACTER
SQL string for column : "substr(trim(:TRANS_NO),1,10)"
MED_DESC NEXT * | CHARACTER
SQL string for column : "trim(:MED_DESC)"
MED_AMOUNT NEXT * | CHARACTER
MED_ACC_NO NEXT * | CHARACTER
SQL string for column : "trim(TRANSLATE (:MED_ACC_NO, 'x'||CHR(10)||CHR(13), 'x'))"
Record 1: Rejected - Error on table "MKG_MED_N", column TRANS_NO.
ORA-01438: value larger than specified precision allowed for this column
Record 2: Rejected - Error on table "MKG_MED_N", column TRANS_NO.
ORA-01438: value larger than specified precision allowed for this column
Column TRANS_NO on my table defined as Number(11,0).
As asked by Finbarr O'B, this from bad file:
305 | 12/07/16 10:07 | 1 |6070000449 | CASH | 50000 |
305 | 12/07/16 10:07 | 1 |6070000448 | CASH | 100000 |
305 | 12/07/16 10:07 | 1 |6070000447 | CASH | 50000 |
305 | 12/07/16 10:07 | 1 |6070000445 | CASH | 209000 |
305 | 12/07/16 12:07 | 1 |6070000430 | CASH | 100000 |
305 | 12/07/16 12:07 | 1 |6070000429 | CASH | 50000 |
Anyone can help me? Thanks before.