SQL Loader / WHAT clause / off swich? / bloated log files

Hello everyone,

I'm loading data using SQL-Loader very large source files. It all works very well.

However, now, by using the WHEN clause (in the control file), I would like to only a very small subset of most load data. This also works very well...

WHEN ARTICLECODE! '000000000000006769' =

However, the log file becomes fully inflated with messages telling me to each record that does not have the WHEN clause...

Record 55078: Discarded - failed all WHEN clauses.

This becomes a problem because it slows down the process and creates large log files that eat upward of my disk space.

There must be a simple command to allow me to disable the messages of thiese, but although I googled on it, I could not find it.

Any ideas on this one? I don't know that it's simple.

Best regards and many thanks,
Alan Searle

Try adding the SILENCE = RELEASES key sqlldr command

Silent means - delete messages during execution (header, comments, errors, discards, partitions)

Tags: Database

Similar Questions

  • SQL * Loader vs external tables to a single file with several types of records (intercalated)

    I have a file of sample data (we will have the a 'true' at a later date and put in day after that) which includes a header, footer, and 5 types of records, that have different columns and lengths, noticed by the first two characters. The different types of records are not all together. On the contrary, some (in particular, two of these types in this example) are intertwined. I am currently working on a SQL * Loader configuration file when it was suggested that I use external tables. I know very little of either, then I would ask what is the best to use.

    Scott@orcl12c > host type test.dat

    header line

    AB, 123, efg

    CD, hij, 456

    Scott@orcl12c > type host test.ctl

    options (Skip = 1)

    load data

    in the ab table truncate where table_name = 'ab'

    fields ended by ',' trailing nullcols

    (table_name filler position (1), col1, col2)

    in the cd table add where table_name = 'cd'

    fields ended by ',' trailing nullcols

    (table_name filler position (1), col3, col4)

    Scott@orcl12c > create table ab

    2 (col1 number,

    3 col2 varchar2 (8))

    4.

    Table created.

    Scott@orcl12c > insert into ab values (1, 'old data')

    2.

    1 line of creation.

    Scott@orcl12c > create table cd

    2 (col3 varchar2 (8))

    3 col4 number)

    4.

    Table created.

    Scott@orcl12c > insert into cd values ("old data", 1).

    2.

    1 line of creation.

    Scott@orcl12c > commit

    2.

    Validation complete.

    Scott@orcl12c > host sqlldr scott/tiger control = test.ctl data = test.dat log = test.log

    SQL * Loader: release 12.1.0.1.0 - Production on Thu Mar 27 13:11:47 2014

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

    Path used: classics

    Commit the point reached - the number of logical records 2

    Table AB:

    1 row loaded successfully.

    Table D:

    1 row loaded successfully.

    Check the log file:

    test.log

    For more information on the charge.

    Scott@orcl12c > select * AB

    2.

    COL1 COL2

    ---------- --------

    EFG 123

    1 selected line.

    Scott@orcl12c > select * from cd

    2.

    COL3 COL4

    -------- ----------

    old data 1

    hij 456

    2 selected lines.

  • SQL Loader when Clause

    Hello

    I have a requirement to load a file and exclude lines on a column with a value where ID NOT LIKE ' % no data %'

    OPTIONS (SKIP = 3)

    DOWNLOAD THE DATA

    INFILE ' / home/test.csv '

    IN THE test TABLE

    TRUNCATE

    What ID do NOT LIKE ' % no data %'

    ' Surrounded FIELDS TERMINATED BY ',' possibly ' ' '

    TRAILING NULLCOLS

    (ID,

    BEGUN,

    TIME,

    DATE_ADDED SYSDATE

    )

    Some examples of ID:

    Data AVDFGHKL:no

    Data THGEIUJD:no

    The value will always point 10 a go (after the semi colon)

    I tried the following, but not luck

    When (1) = '1') AND (10:2). = 'No '.

    Yes, the outer table can be a better option (the file must be in the server). Depending on your data (i.e. the colon (:)) always comes in 9th place) it will work.)

    [oracle@localhost saubhik]$ cat my_data.txt
    AVDFGHKL:No Data, 09/11/2009
    JFDJFUJK, 09/11/2009
    AGHFJDKK:No Data, 09/11/2009
    TRUTIRUT, 09/11/2009
    [oracle@localhost saubhik]$ 
    
    [oracle@localhost saubhik]$ cat test_emp_ctl.ctl
    LOAD DATA
    INFILE 'my_data.txt'
    INTO TABLE test
    TRUNCATE
    when (9:9) <> ":"
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    (id, start_date DATE(19) "DD-MM-YYYY")
    [oracle@localhost saubhik]$ sqlldr scott/tiger control=test_emp_ctl.ctl
    
    SQL*Loader: Release 11.2.0.1.0 - Production on Tue Jun 2 16:20:22 2015
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    Commit point reached - logical record count 4
    [oracle@localhost saubhik]$ 
    

    Audit:

    SQL> SELECT * FROM test;
    
    ID                             START_DAT
    ------------------------------ ---------
    JFDJFUJK                       09-NOV-09
    TRUTIRUT                       09-NOV-09
    
    SQL> 
    
  • SQL Loader what Condition

    Hello. I am currently using the when option in my SQL Loader script:
    when (01:07) <> '9000001'
    But now I find that I must exclude several channels '9000001', '9000002 ', '9000003', 9000004'. Is there a way to do this? Any help would be greatly appreciated.

    Sharpe says:
    Awesome. Thank you. One last question... If I have these channels (for example '9000001', etc.) stored in a different table is anyway to reject the records corresponding to this value into my table? Something like a nested statement select?

    when (01:07) not in(select mystr from mytable)
    

    Let me know is that references a table is possible or not. Thank you.

    As far as I know, you can do that. I believe that the Organizer must be or = or! = and to compare value must be a literal, not a select function or expression. You can use SQL * Loader (or an external table if your data on the server, not the client) to load the data into a staging table, then use SQL to insert... where... not in (mystr select from myTable).

  • The clause in the database log file duplicate

    I tried to duplicate a database (Oracle RAC 10 g ASM 2 node Windows 2003 Server R2) and in the document of the oracle, it went something like:

    DUPLICATE the TARGET DATABASE to dupdb
    PFILE = /dup/oracle/dbs/initDUPDB.ora
    LOGFILE
    ' / dup/oracle/oradata/trgt/redo01.log' SIZE 200 K,.
    ' / dup/oracle/oradata/trgt/redo02.log' SIZE 200 K,.
    ' / dup/oracle/oradata/trgt/redo03.log' SIZE 200 K;

    I thought as the source database RMAN backup already contained the definitions of redo log. Are only these redo log files used for the process during replication of the database? Is the logfile clause is required to use the command DUPLICATE TARGET DATABASE?

    Thank you much in advance.

    LOG file can be used to specify where the newspapers of recovery for the duplicate database should be placed. This clause is not mandatory and it is really necessary only if you intend to rename the redo log files. If you don't need/want to rename the files, you can use the NOFILENAMECHECK option.

  • Help with SQL Loader when Clause

    I have 2 exact same structure Oracle tables.


    NUMBER OF ENO
    NUMBER OF PARENT
    NUMBER OF CHILDREN
    ENAME VARCHAR2 (50 bytes)
    ADDRESS VARCHAR2 (50 bytes)
    CITY VARCHAR2 (50 bytes)
    SRCFILENAME VARCHAR2 (50 bytes)
    SDATE VARCHAR2 (400 bytes)
    Current_Load VARCHAR2 (1 byte)




    Have a data file and a charger control file that loads data into these 2 tables.
    I need to make a conditional charge using a when clause.
    Condition: what MOTHER = CHILD, load table 2 other load in table 1

    My control file looks like this.
    LOAD DATA 
    INFILE 'TEST_20120815.txt' 
    APPEND INTO TABLE test1 
    fields terminated by "|" 
    trailing nullcols 
    ( 
    eno, 
    parent, 
    child, 
    ename, 
    address, 
    city , 
    sdate "to_date(:sdate,'DD/MM/YYYY')", 
    SrcFileName, 
    col7 filler, 
    "Current_Load" constant 'Y' 
    ) 
    INTO TABLE test2 when (parent=child) 
    fields terminated by "|" 
    trailing nullcols 
    ( 
    eno position(1), 
    parent, 
    child, 
    ename, 
    address, 
    city , 
    sdate "to_date(:sdate,'DD/MM/YYYY')", 
    SrcFileName, 
    col7 filler, 
    "Current_Load" constant 'Y' 
    ) 
    But it does not work. It works fine if I give a direct value like PARENT = 'P '.

    Any idea how compare the 2 fields while the conditional support?

    You can't compare 2 fields with the WHEN clause in SQL * file the charger control.
    only literal values as defined by the syntax:

    http://docs.Oracle.com/CD/B19306_01/server.102/b14215/ldr_control_file.htm#i1005657

    As already suggested, you'd be better to load data using an external table which allows to apply conditions you want in your SQL query, which is to get the data.

  • SQL Loader loading data into two Tables using a single CSV file

    Dear all,

    I have a requirement where in I need to load the data into 2 tables using a simple csv file.

    So I wrote the following control file. But it loads only the first table and also there nothing in the debug log file.

    Please suggest how to achieve this.

    Examples of data

    Source_system_code,Record_type,Source_System_Vendor_number,$vendor_name,Vendor_site_code,Address_line1,Address_line2,Address_line3

    Victor, New, Ven001, Vinay, Vin001, abc, def, xyz

    Control file script

    ================

    OPTIONS (errors = 0, skip = 1)
    load data
    replace
    in the table1 table:
    fields ended by ',' optionally surrounded "" "
    (
    Char Source_system_code (1) POSITION "ltrim (rtrim (:Source_system_code)),"
    Record_type tank "ltrim (rtrim (:Record_type)),"
    Source_System_Vendor_number tank "ltrim (rtrim (:Source_System_Vendor_number)),"
    $vendor_name tank "ltrim (rtrim (:Vendor_name)),"
    )
    in the Table2 table
    1 = 1
    fields ended by ',' optionally surrounded "" "
    (
    $vendor_name tank "ltrim (rtrim (:Vendor_name)),"
    Vendor_site_code tank "ltrim (rtrim (:Vendor_site_code)),"
    Address_line1 tank "ltrim (rtrim (:Address_line1)),"
    Address_line2 tank "ltrim (rtrim (:Address_line2)),"
    Address_line3 tank "ltrim (rtrim (:Address_line3)).
    )

    the problem here is loading into a table, only the first. (Table 1)

    Please guide me.

    Thank you

    Kumar

    When you do not provide a starting position for the first field in table2, it starts with the following after a last referenced in table1 field, then it starts with vendor_site_code, instead of $vendor_name.  So what you need to do instead, is specify position (1) to the first field in table2 and use the fields to fill.  In addition, he dislikes when 1 = 1, and he didn't need anyway.  See the example including the corrected below control file.

    Scott@orcl12c > test.dat TYPE of HOST

    Source_system_code, Record_type, Source_System_Vendor_number, $vendor_name, Vendor_site_code, Address_line1, Address_line2, Address_line3

    Victor, New, Ven001, Vinay, Vin001, abc, def, xyz

    Scott@orcl12c > test.ctl TYPE of HOST

    OPTIONS (errors = 0, skip = 1)

    load data

    replace

    in the table1 table:

    fields ended by ',' optionally surrounded "" "

    (

    Char Source_system_code (1) POSITION "ltrim (rtrim (:Source_system_code)),"

    Record_type tank "ltrim (rtrim (:Record_type)),"

    Source_System_Vendor_number tank "ltrim (rtrim (:Source_System_Vendor_number)),"

    $vendor_name tank "ltrim (rtrim (:Vendor_name)).

    )

    in the Table2 table

    fields ended by ',' optionally surrounded "" "

    (

    source_system_code FILL (1) POSITION.

    record_type FILLING,

    source_system_vendor_number FILLING,

    $vendor_name tank "ltrim (rtrim (:Vendor_name)),"

    Vendor_site_code tank "ltrim (rtrim (:Vendor_site_code)),"

    Address_line1 tank "ltrim (rtrim (:Address_line1)),"

    Address_line2 tank "ltrim (rtrim (:Address_line2)),"

    Address_line3 tank "ltrim (rtrim (:Address_line3)).

    )

    Scott@orcl12c > CREATE TABLE table1:

    2 (Source_system_code VARCHAR2 (13),)

    3 Record_type VARCHAR2 (11),

    4 Source_System_Vendor_number VARCHAR2 (27),

    5 $vendor_name VARCHAR2 (11))

    6.

    Table created.

    Scott@orcl12c > CREATE TABLE table2

    2 ($vendor_name VARCHAR2 (11),)

    3 Vendor_site_code VARCHAR2 (16).

    4 Address_line1 VARCHAR2 (13),

    5 Address_line2 VARCHAR2 (13),

    Address_line3 6 VARCHAR2 (13))

    7.

    Table created.

    Scott@orcl12c > HOST SQLLDR scott/tiger CONTROL = test.ctl DATA = test.dat LOG = test.log

    SQL * Loader: release 12.1.0.1.0 - Production on Thu Mar 26 01:43:30 2015

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

    Path used: classics

    Commit the point reached - the number of logical records 1

    TABLE1 table:

    1 row loaded successfully.

    Table TABLE2:

    1 row loaded successfully.

    Check the log file:

    test.log

    For more information on the charge.

    Scott@orcl12c > SELECT * FROM table1

    2.

    RECORD_TYPE SOURCE_SYSTEM_VENDOR_NUMBER $VENDOR_NAME SOURCE_SYSTEM

    ------------- ----------- --------------------------- -----------

    Victor Ven001 new Vinay

    1 selected line.

    Scott@orcl12c > SELECT * FROM table2

    2.

    $VENDOR_NAME VENDOR_SITE_CODE ADDRESS_LINE1 ADDRESS_LINE2 ADDRESS_LINE3

    ----------- ---------------- ------------- ------------- -------------

    Vinay Vin001 abc def xyz

    1 selected line.

    Scott@orcl12c >

  • SQL Loader with BCP datetime format

    Hi, Im having trouble loading of data from sybase to oracle may. I already .dat for my lens. However, its datetime column has changed its formula and it is not accepted to oracle.

    Please see below.

    Source table

    PUP_DATE

    ------------------

    2014-10-01 10:34:07.613

    PUP_DATE = datetime (sybase - source table)

    target table for pup_date data type is TIMESTAMP

    When my sybase database are imported via bcp on looked this way date format .dat file

    .dat file

    ....

    < EOFD > 1000017962 < EOFD > Oct1 2014 AM < EOFD > 10:34:07.613

    ...

    bcp sql developer-generated command line

    BCP dbname.dbo.table_name /directory/test.dat - c t '< EOFD >' - r '< EORD >' - Usa - Ppassword - Sservername

    What can I do to keep its format which is accepted at oracle?

    I tried to change the date and time stamp of mask in sqldeveloper migration options. also the mapping of datatime timestamp data type.

    Thank you!

    The following shows how to use TO_TIMESTAMP in your SQL * control file loader to load your test.dat file data in a column of timestamp into a target of Oracle table.

    Scott@orcl12c > test.dat TYPE of HOST

    1000017962Oct1 2014 10:34:07.613 AM

    Scott@orcl12c > test.ctl TYPE of HOST

    DOWNLOAD THE DATA

    Test.dat INFILE

    IN the purpose of the TABLE

    FIELDS TERMINATED BY ''.

    TRAILING NULLCOLS

    (fill1 FILLER

    fill2 FILLER

    ', pup_date ' TO_TIMESTAMP (: pup_date, ' MonDD YYYY hh.) (FF3AM') ')

    Scott@orcl12c > CREATE TABLE target

    2 (pup_date TIMESTAMP)

    3.

    Table created.

    Scott@orcl12c > HOST SQLLDR scott/tiger CONTROL = test.ctl LOG = test.log

    SQL * Loader: release 12.1.0.1.0 - Production on Wed Jan 7 12:05:18 2015

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

    Path used: classics

    Commit the point reached - the number of logical records 1

    TARGET table:

    1 row loaded successfully.

    Check the log file:

    test.log

    For more information on the charge.

    Scott@orcl12c > SELECT * TARGET

    2.

    PUP_DATE

    ---------------------------------------------------------------------------

    1ST OCTOBER 14 10.34.07.613000 AM

    1 selected line.

  • SQL * Loader: TRUNCATE TO ADD one IN the other

    Is it possible to TRONQUER IN 5 tables and ADD IN 1, in the same control file?

    APPEND it would be the data from the footer, add to this batch file. The data TABLEs are truncated between charges.

    Yes, the syntax is slightly different.  Instead of putting TRUNCATE or APPEND at the top of the control file, you have TRUNCATE or APPEND after each table name in the INTO TABLE clause before the WHEN clause.  Please see the example below who truncates table ab and inserts into the cd table.

    Scott@orcl12c > host type test.dat

    AB, 123, efg

    CD, hij, 456

    Scott@orcl12c > type host test.ctl

    load data

    in the ab table TRUNCATE when (1:2) = "ab".

    fields ended by ',' trailing nullcols

    (table_name filler position (1), col1, col2)

    in the cd table ADD when (1:2) = "cd".

    fields ended by ',' trailing nullcols

    (table_name filler position (1), col3, col4)

    Scott@orcl12c > create table ab

    2 (col1 number,

    3 col2 varchar2 (8))

    4.

    Table created.

    Scott@orcl12c > insert into ab values (1, 'old data')

    2.

    1 line of creation.

    Scott@orcl12c > create table cd

    2 (col3 varchar2 (8))

    3 col4 number)

    4.

    Table created.

    Scott@orcl12c > insert into cd values ("old data", 1).

    2.

    1 line of creation.

    Scott@orcl12c > commit

    2.

    Validation complete.

    Scott@orcl12c > host sqlldr scott/tiger control = test.ctl data = test.dat log = test.log

    SQL * Loader: release 12.1.0.1.0 - Production on Tue Mar 25 13:20:29 2014

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

    Path used: classics

    Commit the point reached - the number of logical records 2

    Table AB:

    1 row loaded successfully.

    Table D:

    1 row loaded successfully.

    Check the log file:

    test.log

    For more information on the charge.

    Scott@orcl12c > select * AB

    2.

    COL1 COL2

    ---------- --------

    EFG 123

    1 selected line.

    Scott@orcl12c > select * from cd

    2.

    COL3 COL4

    -------- ----------

    old data 1

    hij 456

    2 selected lines.

  • Why I don't see physical sql in the log file

    Hello everyone,

    I try to get the physical sql for one of my analysis on OBIEE. I copied and paste logic sql code into the editor of "PROBLEM SQL" on the Advanced tab, and check the log file. However, there is no physical sql code for this analysis. I find any other analysis. What can be the problem? Can he be on the physical tables / issue privileges etc.?

    Kind regards

    Dilek

    Hello everyone,

    I found the solution to my problem. Because I used the filter that contains the result of another analysis, physical sql code is not generated in the log file. When I remove it, it's ok. I'm going to how to change the filter condition. Then the problem is resolved.

    Kind regards

    Dilek

  • SQL Loader problem

    Hi I'm using version 11.2.0.3.0 version of oracle, and I'm trying to push the file using sql loader utility to my DB table, below is my table structure, two of the column will be constant appears as mentioned below in the table structure. And the File_DATE column must be the combination of two fields (Date and time) of flat file to have the appropriate data column format. I get the error message and not be able to download the data using slot control file, so need help.

    sample data file

    OrderDate, name, size, Records, Date, Time
    06202014, authlogfile06202014.txt, 40777214, 198915, June 21 at 03:51
    06202014, transferfile06202014.txt, 372144, 2255, June 21 at 01:34
    06202014, balancefile06202014.txt, 651075, 10343, June 21 at 03:28

    The table structure

    Create the table file_stats
    (Systemtypecode VARCHAR2 (4000)-this will be a value to hardcode "CBD")
    LETTER Date,
    FILENAME VARCHAR2 (4000).
    Size of the file Number (20.0).
    Noofrecords NUMBER (20.0).
    File_DATE VARCHAR2 (4000).
    CREATED_DATE Date - it will be filled with the value SYSDATE
    );

    Here's my control file

    Options
    (SKIP = 1)
    DOWNLOAD THE DATA
    INFILE 'files.csv '.
    ADD
    IN the file_stats table
    FIELDS TERMINATED BY ', '.
    (Systemtypecode CONSTANT 'CBD',
    LETTER DATE 'MMDDYYYY.
    CHAR FILE NAME,
    Size of the ENTIRE file,
    Noofrecords INTEGER,
    boundfiller TANK file_DATE_DDmon
    , file_DATE ' to_date ('2014':: file_DATE_DDmon:: file_DATE, 'YYYYMON DDHH24:MI').
    , created_date CONSTANT 'sysdate.
    )

    When running under command, all erroneous records on as below

    sqlldr schema1/pwd@db1 control = file_stats.ctl log = file_stats.log file_stats.bad = bad

    ERROR:
    Sheet 1: Rejected - error on the table FILE_STATS, column FILE_DATE.
    ORA-01843: not one month valid

    You must add TRAILING NULLCOLS and use EXTERNAL INTEGER instead of an INTEGER and your file_date column must be of type DATE data.  Please see the demo below with some additional corrections.  Note that since there is no year in the data file for the file_date column, which by default is the current year.  If you want to 2014 so you need to concatenate that and add the date format YYYY.

    Scott@orcl12c > files.csv TYPE of HOST

    OrderDate, name, size, Records, Date, Time

    06202014, authlogfile06202014.txt, 40777214, 198915, June 21 at 03:51

    06202014, transferfile06202014.txt, 372144, 2255, June 21 at 01:34

    06202014, balancefile06202014.txt, 651075, 10343, June 21 at 03:28

    Scott@orcl12c > file_stats.ctl TYPE of HOST

    OPTIONS (SKIP = 1)

    DOWNLOAD THE DATA

    INFILE 'files.csv '.

    ADD IN THE TABLE file_stats

    FIELDS TERMINATED BY ',' TRAILING NULLCOLS

    (systemtypecode CONSTANT "CBD"

    , odate DATE 'MMDDYYYY '.

    filename CHAR

    INTEGER EXTERNAL file size

    noofrecords INTEGER EXTERNAL

    file_date_ddmon BOUNDFILLER TANK

    , file_date DATE 'My DDHH24:MI' ': file_date_ddmon |: file_date '

    , created_date 'SYSDATE.

    )

    Scott@orcl12c > file_stats CREATE TABLE

    2 (systemtypecode VARCHAR2 (14),)

    3 DATE odate,.

    4 name of file VARCHAR2 (24).

    size of the file NUMBER 5 (20.0).

    6 noofrecords NUMBER (20.0).

    7 file_date DATE,

    8 created_date DATE)

    9.

    Table created.

    Scott@orcl12c > HOST SQLLDR scott/tiger CONTROL = file_stats.ctl LOG = file_stats.log file_stats.bad = BAD

    SQL * Loader: release 12.1.0.1.0 - Production on Thu Feb 5 15:26:49 2015

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

    Path used: classics

    Commit the point reached - the number of logical records 3

    Table FILE_STATS:

    3 rows loaded successfully.

    Check the log file:

    file_stats.log

    For more information on the charge.

    Scott@orcl12c > SELECT * FROM file_stats

    2.

    SYSTEMTYPECODE, KAI NOOFRECORDS FILE_DATE CREATED_DATE FILENAME FILE SIZE

    -------------- --------------- ------------------------ ---------- ----------- --------------- ---------------

    Friday, June 20, 2014 authlogfile06202014.txt 40777214 198915 Sunday 21 June 2015 CBD Thursday, February 5, 2015

    Friday, June 20, 2014 transferfile06202014.txt 372144 2255 Sunday 21 June 2015 CBD Thursday, February 5, 2015

    Friday, June 20, 2014 balancefile06202014.txt 651075 10343 Sunday 21 June 2015 CBD Thursday, February 5, 2015

    3 selected lines.

  • SQL loader, problem with the POSITION &amp; EXTERNAL

    Hi gurus of the Oracle.

    I have problem with position and external.

    I have the data file with the data of 1 million records

    data delimiter is to and eventually closed by «»

    some lines are not loaded due to errors of data, i.e. data contains some «»

    now, we decided to use the position & external. am unable to write the control file.

    any help would be much appreciated

    The table name is person_memo, 4 columns

    ID_PERSONVARCHAR2 (9 bytes)
    TX_MEMOVARCHAR2 (1000 bytes)
    ID_USERVARCHAR2 (20 bytes)
    TM_STAMPTIMESTAMP (6)

    my control file is

    DOWNLOAD THE DATA

    ADD THE PERSON_MEMO TABLE

    FIELDS TERMINATED BY ' |'

    SURROUNDED OF POSSIBLY "" "

    TRAILING NULLCOLS

    (

    ID_PERSON POSITION (1) "CUT (: ID_PERSON).

    , TX_MEMO POSITION (10) TANK (1000) "CUT (: TX_MEMO).

    , POSITION (1012) ID_USER "TRIM (: ID_USER).

    , TM_STAMP POSITION (1031) EXTERNAL (26) ' DECODE (: TM_STAMP, NULL, NULL, TO_TIMESTAMP (: TM_STAMP, ' YYYY-MM-DD - HH24.MI.)). SS. "(FF')).

    )

    specimen of data file

    "04725813" | "aka"Little Will"" "|" " 095TDEAN «|» 2013-02-21 - 11.13.44.632000

    "05599076" | "" FIRST NAME - ADDED A 'T' AS ON THE REG MAP | ' 016DDEAL ' |. ' 2014-04-11 - 10.06.35.598000

    Thanks and greetings

    REDA

    In your control file, EXTERNAL (26) must be INTEGER EXTERNAL (26).

    Unfortunately, this forum destroyed the spacing, so I can't say whether or not your data are positionnelles.  If it is positional, you can then use positions, but you need start and end positions.  The positions that you posted have nothing to do with the data you've posted.  If you use positions, you can eliminate the delimiters and the beginning and the end of citations using these positions.

    If your data are not positionnelles and you have quotes in your data in quotes, but you don't have the pipe delimiters in your data, then you can only use the delimiters and trim the quotes start and final data.

    I have demonstrated the two methods below, using test1.ctl for the positional method and test2.ctl for the defined method.

    Scott@orcl12c > host type test.dat

    "04725813" | "aka"Little Will"" | "" 095TDEAN «|» 2013-02-21 - 11.13.44.632000

    "05599076" | "" FIRST NAME - ADDED A 'T' AS ON THE REG MAP | ' 016DDEAL ' |. ' 2014-04-11 - 10.06.35.598000

    Scott@orcl12c > type host test1.ctl

    DOWNLOAD THE DATA

    ADD THE PERSON_MEMO TABLE

    FIELDS TERMINATED BY ' |'

    TRAILING NULLCOLS

    (ID_PERSON POSITION (02:10))

    , TX_MEMO POSITION (14:59)

    POSITION ID_USER (63:82)

    , TM_STAMP POSITION (85:110) EXTERNAL INTEGER (26) ' DECODE (: TM_STAMP, NULL, NULL,).

    TO_TIMESTAMP (: TM_STAMP, ' YYYY-MM-DD - HH24.MI.) SS. "(FF')).

    )

    Scott@orcl12c > type host test2.ctl

    DOWNLOAD THE DATA

    ADD THE PERSON_MEMO TABLE

    FIELDS TERMINATED BY ' |'

    TRAILING NULLCOLS

    (ID_PERSON "TRIM ("------"" FROM: ID_PERSON ")")

    , TX_MEMO CHAR (1000) "TRIM ("------"" FROM: TX_MEMO ").

    , ID_USER "TRIM ("------"" FROM: ID_USER ").

    , TM_STAMP INTEGER EXTERNAL (26) ' DECODE (: TM_STAMP, NULL, NULL,).

    TO_TIMESTAMP (: TM_STAMP, ' YYYY-MM-DD - HH24.MI.) SS. "(FF')).

    )

    Scott@orcl12c > create table person_memo

    2 (ID_PERSON VARCHAR2 (9 bytes)

    3, TX_MEMO VARCHAR2 (1000 bytes)

    4, ID_USER VARCHAR2 (20 bytes)

    5, TM_STAMP TIMESTAMP (6))

    6.

    Table created.

    Scott@orcl12c > host sqlldr scott/tiger control = test1.ctl data = test.dat log = test1.log

    SQL * Loader: release 12.1.0.1.0 - Production Thursday, May 15, 10:53:11-2014

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

    Path used: classics

    Commit the point reached - the number of logical records 2

    Table PERSON_MEMO:

    2 rows loaded successfully.

    Check the log file:

    test1.log

    For more information on the charge.

    Scott@orcl12c > select * from person_memo

    2.

    ID_PERSON

    ---------

    TX_MEMO

    --------------------------------------------------------------------------------

    ID_USER

    --------------------

    TM_STAMP

    ---------------------------------------------------------------------------

    04725813

    aka "Little Will"

    095TDEAN

    21 FEBRUARY 13 11.13.44.632000 AM

    05599076

    FIRST NAME - ADDED A 'T' AS ON THE REG MAP

    016DDEAL

    11 APRIL 14 10.06.35.598000 AM

    2 selected lines.

    Scott@orcl12c > truncate table person_memo

    2.

    Table truncated.

    Scott@orcl12c > host sqlldr scott/tiger control = test2.ctl data = test.dat log = test2.log

    SQL * Loader: release 12.1.0.1.0 - Production Thursday, May 15, 10:53:11-2014

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

    Path used: classics

    Commit the point reached - the number of logical records 2

    Table PERSON_MEMO:

    2 rows loaded successfully.

    Check the log file:

    test2.log

    For more information on the charge.

    Scott@orcl12c > select * from person_memo

    2.

    ID_PERSON

    ---------

    TX_MEMO

    --------------------------------------------------------------------------------

    ID_USER

    --------------------

    TM_STAMP

    ---------------------------------------------------------------------------

    04725813

    aka "Little Will"

    095TDEAN

    21 FEBRUARY 13 11.13.44.632000 AM

    05599076

    FIRST NAME - ADDED A 'T' AS ON THE REG MAP

    016DDEAL

    11 APRIL 14 10.06.35.598000 AM

    2 selected lines.

  • SQL Loader Help in 10g

    Hello

    Is it possible to abort the sql loader with force when a value is not present? I have data like this file

    1. XXX123 | XXX | 20121121 |
    4. XXX123 | XXX |
    5. XXX123 | XXX | 1.
    5. XXX123 | XXX | 2.
    5. XXX123 | XXX |
    9. XXX123 | XXX |

    Model:
    record type | Batch number. lot desc | date | detail line num | other

    1,4,5,9 are the types of records, if you see this line 5. XXX123 | XXX | 1| .. 1 represents a number of detail line, my requirement is if the number of detail line is null for the record type 5 then I want to abort the sqlloader.

    Is this possible?

    Published by: 940838 on November 21, 2012 23:54

    940838 wrote:
    I think that I am not clear in my requirement...

    The question was how to abort the charger if the number of detail line is not present in the record type 5. It is, however, normal detailing line num is not required for other types of records. points of view.

    Hello

    you were clear, and I did a quick test. Unfortunately you can not do this check in SQL * Loader as the WHEN in the control file clause allows not just GOLD.

    Even if you add this check using a constraint in your table and specify the maximum number of errors to 0, SQL * Loader will load the files until this error.

    Let me show you an example:

    (1) create a table with a constraint that, for record_type detail_line_number 5, may not be null.

    CREATE TABLE test
    (
       record_type    INTEGER
     , batch_number   VARCHAR2 (10)
     , batch_desc     VARCHAR2 (10)
     , batch_date     DATE
     , detail_line_num INTEGER
     , other          VARCHAR2 (10)
    );
    
    ALTER TABLE test
      ADD CONSTRAINT check_rec_5
         CHECK (   record_type = 5 AND detail_line_num IS NOT NULL
                OR record_type != 5) ENABLE;
                
    

    In this table, you will not be able to load lines with a record_type = 5 and NULL detail_line_num as this will be considered an error.

    We will prepare your input file:

    1|XXX123|XXX|20121121||
    4|XXX123|XXX|||
    5|XXX123|XXX||1|
    5|XXX123|XXX|||
    5|XXX123|XXX|||
    9|XXX123|XXX|||
    1|XXX123|XXX|20121121||
    4|XXX123|XXX|||
    5|XXX123|XXX||1|
    5|XXX123|XXX||2|
    5|XXX123|XXX|||
    9|XXX123|XXX|||1|XXX123|XXX|20121121||
    4|XXX123|XXX|||
    5|XXX123|XXX||1|
    5|XXX123|XXX||2|
    5|XXX123|XXX|||
    9|XXX123|XXX|||1|XXX123|XXX|20121121||
    4|XXX123|XXX|||
    5|XXX123|XXX||1|
    5|XXX123|XXX||2|
    

    As you can see that the input file has the fourth line with record_type = 5 and detail_line_num NULL. It is a mistake of the constraint.

    Here I used the control file:

    --test.ctl
    load data
    INFILE 'test.dat'
    APPEND
    INTO TABLE test
    FIELDS TERMINATED BY '|'
    TRAILING NULLCOLS
    (
     record_type     ,
     batch_number    ,
     batch_desc      ,
     batch_date      Date 'YYYYMMDD',
     detail_line_num ,
     other
    )
    

    If I try to run the SQL * Loader and ask to stop at the first error in this way:

    sqlldr userid=yourname/yourpass@yourdb control=test.ctl errors=0 rows=100
    

    SQL * Loader performs only 3 folders because it encounters an error in line 4 and having specified errors = 0 will not continue to load. In fact, the process will continue until she reached the point of validation (in this case 100 lines), but it is not loading any record after the error, or continue to read the file.

    So, if I check the table

    SELECT * FROM test;
    
    RECORD_TYPE BATCH_NUMBER BATCH_DESC BATCH_DATE            DETAIL_LINE_NUM OTHER
    ----------- ------------ ---------- --------------------- --------------- ----------
              1 XXX123       XXX        21-11-2012 00:00:00
              4 XXX123       XXX
              5 XXX123       XXX                                            1           
    

    You will only see the records until you have reached the error.

    This can be avoided, as documented in SQL * Loader manual reference:

    Load interrupted because they exceeded the maximum number of errors


    If the maximum number of errors is exceeded, SQL * Loader stops loading documents in any table and the work accomplished so far is committed.

    As you can see SQL * Loader to interrupt the treatment, but it engage in any case files until this error.

    Another solution is to create an external table in Oracle and do all the checks you want before you copy your table in a database table, as suggested BluShadow.

    Kind regards.
    Al

  • query SQL loader

    Hello

    I load a CSV for emp table data using sql loader.
    I wrote the control as file below. How to run so that the data can be inserted into the emp table.

    Control file:
    DOWNLOAD THE DATA
    INFILE ' C:\VINOD\EMP_DATA. CSV'
    INSERT INTO THE TABLE EMP
    FIELDS ENDED BY ',' POSSIBLY FRAMED BY "" "
    TRAILING NULLCOLS
    (ENO, ENAME, SAL);


    Thank you

    910575 wrote:
    Hello

    I load a CSV for emp table data using sql loader.
    I wrote the control as file below. How to run so that the data can be inserted into the emp table.

    Control file:
    DOWNLOAD THE DATA
    INFILE ' C:\VINOD\EMP_DATA. CSV'
    INSERT INTO THE TABLE EMP
    FIELDS ENDED BY ',' POSSIBLY FRAMED BY "" "
    TRAILING NULLCOLS
    (ENO, ENAME, SAL);

    Thank you

    bcm@bcm-laptop:~$ sqlldr 
    
    SQL*Loader: Release 11.2.0.1.0 - Production on Sun Jun 24 11:28:59 2012
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    Usage: SQLLDR keyword=value [,keyword=value,...]
    
    Valid Keywords:
    
        userid -- ORACLE username/password
       control -- control file name
           log -- log file name
           bad -- bad file name
          data -- data file name
       discard -- discard file name
    discardmax -- number of discards to allow          (Default all)
          skip -- number of logical records to skip    (Default 0)
          load -- number of logical records to load    (Default all)
        errors -- number of errors to allow            (Default 50)
          rows -- number of rows in conventional path bind array or between direct path data saves
                   (Default: Conventional path 64, Direct path all)
      bindsize -- size of conventional path bind array in bytes  (Default 256000)
        silent -- suppress messages during run (header,feedback,errors,discards,partitions)
        direct -- use direct path                      (Default FALSE)
       parfile -- parameter file: name of file that contains parameter specifications
      parallel -- do parallel load                     (Default FALSE)
          file -- file to allocate extents from
    skip_unusable_indexes -- disallow/allow unusable indexes or index partitions  (Default FALSE)
    skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable  (Default FALSE)
    commit_discontinued -- commit loaded rows when load is discontinued  (Default FALSE)
      readsize -- size of read buffer                  (Default 1048576)
    external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE  (Default NOT_USED)
    columnarrayrows -- number of rows for direct path column array  (Default 5000)
    streamsize -- size of direct path stream buffer in bytes  (Default 256000)
    multithreading -- use multithreading in direct path
     resumable -- enable or disable resumable for current session  (Default FALSE)
    resumable_name -- text string to help identify resumable statement
    resumable_timeout -- wait time (in seconds) for RESUMABLE  (Default 7200)
    date_cache -- size (in entries) of date conversion cache  (Default 1000)
    no_index_errors -- abort load on any index errors  (Default FALSE)
    
    PLEASE NOTE: Command-line parameters may be specified either by
    position or by keywords.  An example of the former case is 'sqlldr
    scott/tiger foo'; an example of the latter is 'sqlldr control=foo
    userid=scott/tiger'.  One may specify parameters by position before
    but not after parameters specified by keywords.  For example,
    'sqlldr scott/tiger control=foo logfile=log' is allowed, but
    'sqlldr scott/tiger control=foo log' is not, even though the
    position of the parameter 'log' is correct.
    

    alternative, you could always Read The Fine Manual

    http://docs.Oracle.com/CD/E11882_01/server.112/e22490/part_ldr.htm#i436326

  • How to handle multiple formats of date to the same date field in SQL * Loader

    Dear all,

    I have a requirement where I need to get data from a text file and even insert into the oracle table.

    I'm using SQL * Loader to fill data from the text file in my table.

    The file has an area where I expect to date data date in different formats, such as MON/dd/yyyy mon/dd/yyyy mon/dd/yyyy, dd/mm/yyyy, DD/month/yyyy.

    When you use SQL * Loader, I can see loading fails for records where we have formats such as LUN/jj/aaaa, Mon/dd/yyyy, DD/month/yyyy.

    Is it possible in SQL * Loader where we can mention all these date formats so that data from that date should go smoothly in the underlying date column in the table.

    Receive your answer on that.

    Thank you
    Madhu K.

    I think following could be the solution to your problem:

    Suppose if you have data from four different date formats, you need to load the data into four different tables by running SQL * Loader four times and each time specify other date format in the control file whose data to load, and then at the end, merge data from these four different tables using the UNION clause.

    Elya

Maybe you are looking for

  • access to HBO now on pc, tablet, ipad

    I bought hbonow via Itunes. I get HBoNOW on my tv, but cannot get it on my ipad or tablet, don't know how to do it. I downloaded the HBO NOW app and try to log in, pc, Tablet, and my ipad but HBO does not recognize my email or password.

  • Satellite M200 screen turns off after that start & battery does not charge

    Hello, I am from Jakarta, IndonesiaI have a problem with my Toshiba Satellite M200 Notebook (running Windows 7 Home Premium) After I press the power button to the top of my laptop, it works fine display BIOS and Windows startup screen.but after that

  • How can I get my macbook air to stop repetitive clicks

    I just got this computer barely a month, I purchased from best buy and this by clicking. He came to dislike. I don't know what to try, it's not an apple store where I live. What should I do? It still does for some time after I turned it off. How can

  • Save methods (2) but no help with iPhoto

    While I was asking a question on merging photos and iPhoto, I came downstairs to discover that iphoto had a picture inside, out of the 13 999. It was a document that I have identified as not even mine. Since then, I have tried several times to restor

  • T430 recovery partition does not

    The recovery on my T430 partition doesn't seem to work - I can't create a DVD out of it (ends with an error "rc = 9"), nor can I use the partition itself for recovery (the process starts but fails). How can I get a DVD to use?