Skipping a Column in SQL Loader

Hi all,
I have successfully used SQL*Loader in the example below.
Data to Import:
1     Ahmed Baraka     1000     1.87     1-1-2000
2     John Rice     5000     2.4     10-5-1998
3     Emme Rak     2500     2.34     
4     King Size     2700     
5     Small Size     3000          31-3-2001
Table Structure
PERSONS
(ID NUMBER,     
PNAME VARCHAR2(100),
BALANCE NUMBER,
RATE NUMBER,
JOIN_DATE DATE );
Control File:
OPTIONS ( ERRORS=0)
LOAD DATA
INFILE 'C:\temp\data\persons.dat'
BADFILE 'C:\temp\data\persons.bad'
DISCARDFILE 'C:\temp\data\persons.dsc'
INTO TABLE "HR"."PERSONS" REPLACE
FIELDS TERMINATED BY X'9' TRAILING NULLCOLS
(ID INTEGER EXTERNAL,
PNAME CHAR,
BALANCE INTEGER EXTERNAL,
RATE FLOAT EXTERNAL,
JOIN_DATE date 'dd-mm-yyyy')My question is: suppose the table PERSONS doesn't have RATE column, what modification shall I do in the control file to import the data into the table without the RATE data?
Thanks in advance.

Hello Ahmed.
Based on the last control file, you would need to change toOPTIONS ( ERRORS=0)
LOAD DATA
INFILE 'C:\temp\data\persons.dat'
BADFILE 'C:\temp\data\persons.bad'
DISCARDFILE 'C:\temp\data\persons.dsc'
INTO TABLE "MYTABLE" REPLACE FIELDS TERMINATED BY X'9' TRAILING NULLCOLS
(B INTEGER EXTERNAL,
A CHAR)As you can see, I just changed the table and then the column names to match the columns in the target table. I experimented with BOUNDFILLER a bit to demonstrate how you could retain the original file definition and then use it for the new table, but I wasn't happy enough with how it works and when it doesn't to demonstrate its use here.
Hope this helps,
Luke
P.S. You may want to create a new post especially when the existing thread is noted as answered instead of using an old post. I only happened to see this because I was navigating through the threads and scrolling down.

Similar Messages

  • Skip a column in sql loader

    Hi
    I have a csv file like this...
    co1,col2,col3,col4
    col1,col2,col3,col4
    I want to skip the data in the column 1. ie., col1 and load only col2,col3 and col4
    Can i do this in sql*loader.
    I am on 10.2.0.4
    THX
    Sunil

    Hi,
    you can use a FILLER. This will specify there is a field, but we don't use it:
    LOAD DATA
    TRUNCATE INTO TABLE T1
    FIELDS TERMINATED BY ','
    ( field1 FILLER,
      field2,
      field3,
      field4
    )There is also the keyword BOUNDFILLER. This can be used, if you want to use the field later, for another field.
    Herald ten Dam
    http://htendam.wordpress.com

  • Load image file into a LONG RAW column via SQL*Loader

    Does anyone know how to load a image file into a LONG RAW column via SQL*Loader?
    Thanks
    -Hsing-Hua-

    Are you trying to import the image on the client into Oracle lite, or from the server end into the main oracle database for download to the client?
    On our system images are loaded into the the oracle lite database (10g R1 at the moment) on the client (DELL X50 PDA's) into a BLOB (Not LONG RAW) column using Java (relatively standard functionality in Java) as this is what our application software is written in.
    From the server end, we do not at the moment load images as such, but we do load the application software into the database for deployment of new versions to the clients (the DMC/DMS updates we have found very unreliable), and the technique should be the same for images. Again the file is imported into a BLOB column.
    NOTE a column defined as BLOB on the main Oracle database appears as a LONG VARBINARY on the client Oracle lite database, but the synchronisation process handles the conversion with no problem.
    To import into a BLOB column on the server try the following
    1) you will need to create a DIRECTORY (CREATE DIRECTORY command) within the database, pointing at a directory on the database server (or accessible from it). This is needed for the file location.
    CREATE OR REPLACE DIRECTORY PDA_FILE_UPLOAD AS '/pdaapps/jar/'
    NOTE create directory needs to be run as SYSTEM
    2) define your table to hold the image and other data. Our tables is
    SQL> desc pda_applications
    Name Null? Type
    ID NOT NULL NUMBER(12)
    PDAAT_CODE NOT NULL VARCHAR2(10)
    VERSION NOT NULL NUMBER(5,2)
    PART_NO NOT NULL NUMBER(3)
    FILE_OBJECT BLOB
    DEPLOY_APPLICATION_YN NOT NULL VARCHAR2(1)
    3) copy the image (or in our case a .jar file) to the database server directory specified in step 1
    4) the actual import is done using a DBMB_LOB procedure
    PROCEDURE pr_load_file
    Module Name     :     pr_load_file
    Description     :     Main call. Create a new pda_applications record, and import the specified file into it
    Version History:
    Vers. Author Date Reason
    1.0 G Wilkinson 03/02/2006 Initial Version.
    (PA_VERSION IN NUMBER
    ,PA_FILENAME IN VARCHAR2
    ,PA_PDAAT_CODE IN VARCHAR2
    ,PA_PART_NO IN NUMBER DEFAULT 1
    ,PA_DEPLOY IN VARCHAR2 DEFAULT 'Y')
    IS
    l_FileLocator BFILE;
    l_blobLocator BLOB;
    l_seq NUMBER;
    l_location VARCHAR2(20);
    no_params EXCEPTION;
    call_fail EXCEPTION;
    BEGIN
    -- Throw error if required details not present
    IF pa_version IS NULL
    OR pa_filename IS NULL
    OR pa_pdaat_code IS NULL THEN
    RAISE no_params;
    END IF;
    -- Initialize the BLOB locator for writing. Note that we have
    -- to import a blob into a table as part of a SELECT FOR UPDATE. This locks the row,
    -- and is a requirement for LOADFROMFILE.
    SELECT pdaa_id_seq.nextval
    INTO l_seq
    FROM dual;
    -- First create the application record (file is imported by update, not insert
    INSERT INTO pda_applications
    (ID,PDAAT_CODE,VERSION,PART_NO,FILE_OBJECT,DEPLOY_APPLICATION_YN)
    VALUES (l_seq,pa_pdaat_code,pa_version,pa_part_no,EMPTY_BLOB(),pa_deploy);
    -- Lock record for update to import the file
    SELECT file_object INTO l_blobLocator
    FROM pda_applications
    WHERE id=l_seq
    FOR UPDATE;
    -- Initialize the BFILE locator for reading.
    l_FileLocator := BFILENAME('PDA_FILE_UPLOAD', pa_filename);
    DBMS_LOB.FILEOPEN(l_FileLocator, DBMS_LOB.FILE_READONLY);
    -- Load the entire file into the character LOB.
    -- This is necessary so that we have the data in
    -- character rather than RAW variables.
    DBMS_LOB.LOADFROMFILE(l_blobLocator, l_FileLocator
    ,DBMS_LOB.GETLENGTH(l_FileLocator)
    ,src_offset => 1);
    -- Clean up.
    DBMS_LOB.FILECLOSE(l_FileLocator);
    -- Create download records for each user associated with the application for sending to the PDA's
    -- to install the software
    IF pa_deploy = 'Y' then
    IF fn_deploy (pa_pdaa_id => l_seq
    ,pa_pdaat_code => pa_pdaat_code) != 'SUCCESS' THEN
    RAISE call_fail;
    END IF;
    END IF;
    EXCEPTION
    WHEN no_params THEN
    pkg_appm.pr_log_message( pa_mdl_name => g_module_name
    , pa_mdl_version => fn_get_body_version
    , pa_error_code => SQLCODE
    , pa_location => l_location
    , pa_text => 'Missing parameters'
    , pa_severity => 'E'
    WHEN OTHERS THEN
    DBMS_LOB.FILECLOSE(l_FileLocator);
    pkg_appm.pr_log_message( pa_mdl_name => g_module_name
    , pa_mdl_version => fn_get_body_version
    , pa_error_code => SQLCODE
    , pa_location => l_location
    , pa_text => SQLERRM
    , pa_severity => 'E'
    END pr_load_file;
    I hope this may be of some help

  • Can we concatenate 2 columns of datafile into one column in sql loader

    Hi,
    Can we concatenate 2 columns of datafile into one column in sql loader?
    like
    Suppose there are two field in data file
    column1 - lastname value tiger
    column2 - firstname value scott
    Required result
    sould be concatenate of the two field into one database coulmn
    like name and value should be scott tiger.
    Thanks

    Or try this...
    My input file
    1,KARTHICK,PATTABIRAMAN,SOFTWARE
    2,VIJAY,RENGANATHAN,FINANCE
    3,VIMAL,KANTH,SALESAnd my control file.
    LOAD DATA
    INFILE 'EmpDetail.txt'
    BADFILE 'EmpDetail.bad'
    DISCARDFILE 'EmpDetail.dsc'
    INTO TABLE "EMPDETAIL"
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS     
      (NO,
      NAME1 BOUNDFILLER,
      NAME ":NAME1||' '||:NAME",
      DEPT) My table is.
    SQL> create table empdetail(no integer, name varchar2(50), dept varchar2(50))
      2  /
    Table created.Then i loaded the data.
    D:\karthick\Akiva\Look up\Akiva\Address Look Up>sqlldr sysadm/sysadm@akivanew empdetail.ctl
    SQL*Loader: Release 9.2.0.1.0 - Production on Mon Sep 15 12:23:42 2008
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    Commit point reached - logical record count 2
    Commit point reached - logical record count 3And the output is
    SQL> select * from empdetail
      2  /
            NO NAME                                               DEPT
             1 KARTHICK PATTABIRAMAN                              SOFTWARE
             2 VIJAY RENGANATHAN                                  FINANCE
             3 VIMAL KANTH                                        SALESThanks,
    Karthick.

  • How to load date column using sql loader

    Hi,
    I am trying to load a file using sql loader. my date value in the file is '2/24/2009 8:23:05 pm',
    In control file for this column i specified like this
    rec_date date ''mm/dd/yyyy hh:mi:ss pm"
    But i am getting following error
    not avalid month.
    Thanks
    sudheer

    Hi,
    Use this example as reference:
    CTL file:
    LOAD DATA
    INFILE 'test.txt'
    BADFILE 'test.bad'
    truncate INTO TABLE T3
    FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '|' TRAILING NULLCOLS
    dt_date DATE "mm/dd/yyyy hh:mi:ss pm")DAT file:
    2/24/2009 8:23:05 pm
    C:\ext_files>sqlldr hr/hr control=test.ctl
    SQL*Loader: Release 10.2.0.1.0 - Production on Wed Jul 1 20:35:35 2009
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Commit point reached - logical record count 1
    Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
    Connected as hr
    SQL> desc t3;
    Name    Type Nullable Default Comments
    DT_DATE DATE Y                        
    SQL> select to_char(dt_date, 'mm/dd/yyyy hh24:mi:ss') from t3;
    TO_CHAR(DT_DATE,'MM/DD/YYYYHH2
    02/24/2009 20:23:05
    SQL> Regards,
    Edited by: Walter Fernández on Jul 1, 2009 8:35 PM - Adding example...
    Edited by: Walter Fernández on Jul 1, 2009 8:38 PM
    Edited by: Walter Fernández on Jul 1, 2009 8:41 PM - Fixing some information...

  • How to have a common value for a column using sql loader

    Hi Have a sql loader file which looks like below. But I am not getting how insert the same value for the column in all rows.
    id,
    crt_user_id
    BEGINDATA
    1;"system"
    2;"system"
    3;"system"
    So, instead of entering the crt_user_id as system in all rows, can we place the value at the top after the column name?

    Thanks Srini. your hint/suggestion helped me in finding the solution.
    LOAD DATA
    INFILE *
    BADFILE './TEST.BAD'
    DISCARDFILE './TEST.DSC'
    APPEND INTO TABLE TEST_TABLE
    Fields terminated by ";" Optionally enclosed by '"'
    ID,
    crt_user_id CONSTANT 'SOME CONSTANT VALUE'
    BEGINDATA
    1
    2
    3
    so by using CONSTANT key word, we can avoid tying the same value in the data

  • How to skip footer record in SQL*Loader input file

    I have am using SQL*Loader in a batch import process.
    The input files to SQL*Loader have a header record and footer record - always the 1st and last records in the file.
    I need SQL*Loader to ignore these two records in every file when performing the import. I can easily ignore the header by using the SKIP function.
    Does anybody know how to ignore the last record (footer) in an input file??
    I do not want to physically pre-strip the footer since the business want all data files to have the header and footer records.

    Thanks - how do I use the when clause to specify the last line of the input file?
    I am presuming it requires me to have a unique identifier at a given position on that last line. If I don't have such an identifier can I still use your solution?
    Cheers Why not putting an idetifier at the end of your input file: echo "This_is_the_End" >> input_file ?

  • How to have more than one condition on same column --- using SQL Loader

    Hi All,
    I am stuck with SQL Loader..
    How do I filter records before loading in the table using when clause..
    i should load data only when
    field1 = 'AC' or 'VC'
    field2 is NULL
    i used various combinations in when clause like
    a) when field1='AC' or field1='VC' and field2 = BLANKS
    b) when (field1='AC') and (field2 = BLANKS )
    & similar...
    In all the cases I tried I could not implement OR condition with field1 and null condition with field2
    but my main concern is can we use OR or IS NULL things in when clause of SQL Loader..
    is it possible to check this anywhere??
    any alternate solution u could suggest??
    Thanks
    Dikshit

    Ok I'll try that, although I did try it earlier when I had iTunes 5.xx loaded, I think.
    As to size of playlists, I have a master (900 songs) that defines what will fit onto the ipod , I then generate all the others as subsets of the master (not of the library)- hence I know they will all fit
    Can you also clarify something for me: the dialogue box we are discussing is intended, I think, so that one can set the automatic synching of certain playlists between the PC & the ipod. Is that the only way one can select other playlists to go to the ipod - i.e. as static once-offs, not synchronised ?
    Apple' docs, I think, are poor in this regard - they assume most ipods are bigger then the users song library and they gloss over the details of this alternate mode of playlist synching.
    Thanks - Nick

  • How to load selected column with sql loader

    Hi all
    I want to load only few columns from a datafile not all columns and i don't know how to do from SQL LDR.
    I know we can use position but the data is not fixed length.
    I'm working with Oracle 11g and Linux OS.
    Here is an example of my data file and table.
    Data file is and the field is separated by | :
    3418483|VOU|20120609090114|555208363|0|2858185502059|1000|0||
    3418484|SR|20120609090124|551261956|0|4146314127759|200000|0||
    SQL> desc TBL1
    Name                                      Null?    Type
    CTYPE                                              VARCHAR2(5)
    BDATE                                              DATE
    PARTNUM                                             VARCHAR2(60)
    SERIALNO                                           NUMBER
    FVALUE                                             NUMBER
    I want to have:
    SQL> select * from TBL1
    CTYPE     BDATE          PARTNUM          SERIALNO          FVALUE
    VOU     09/06/2012     555208363     2858185502059          1000
    SR     09/06/2012     551261956     4146314127759          200000Thank you.

    look at FILLER
    http://www.orafaq.com/wiki/SQL*Loader_FAQ#Can_one_skip_certain_columns_while_loading_data.3F
    --add sample
      num1 FILLER,
      ctype,
      bdate "to_date(:bdate, 'YYYYMMDDHH24MISS')",
      PARTNUM,
      num2 FILLER,
      SERIALNO,
      FVALUE, 
      num3 FILLER
      )Edited by: AlexAnd on Jun 9, 2012 4:29 AM

  • Sql Loader fails with newline fields

    Hi,I have a csv file delimited by "|" which is exported from MS Access. One of the fields contains a newline (e.g. notes column) which sql loader treats as beginning of new record. Can anyone tell me how to force the loader to ignore this newline.Is there a way I can tell the loader to read the optional '"' and continue with the record till it finds a closing '"'? Or is there a way to export data from access an force it to skip newlines and make a flat file with one record per line? I hate fixed length columns since it adds up pain in wrting the control files. Also the loader still fails to read the record if it encounters a newline as discussed above.
    Thanks

    Unfortunately there is no command that can make sql*loader treat two lines in a text file as one record. Some one asked tom kyte same question, see what he had to say about it:
    http://asktom.oracle.com/pls/ask/f?p=4950%3A8%3A%3A%3A%3A%3AF4950_P8_DISPLAYID%3A4972732303253
    Why don't you create a staging table where you first load the data, and then from the data inserted into this table populate your original table in the form required.
    Anwar

  • Sql loader: loading external file into blob

    hi,
    i keep being blocked by loading external binary files into a blob columns with sql loader tool.
    Here is the problem:
    I want to load pictures into a table with lob columns. Here is my control file, data file and the error message:
    control file:
    LOAD DATA
    APPEND
    INTO TABLE T_K58_SYMBOLE
    FIELDS TERMINATED BY ';' TRAILING NULLCOLS
    SYMB_ID INTEGER EXTERNAL(8),
    SYMB_LMLABEL CHAR(100),
    imgName FILLER,
    SYMB_GIF_HI BFILE(CONSTANT ".", imgName),
    thumbName FILLER,
    SYMB_GIF_LOW BFILE(CONSTANT ".", thumbName)
    data file:
    1;0800;image1.gif;image1.gif;
    error message:
    SQL*Loader-418: Bad datafile datatype for column SYMB_GIF_HI
    Here is the script of the creation of my table in my database:
    create table T_K58_SYMBOLE (
    SYMB_ID NUMBER(8) not null,
    SYMB_LMLABEL VARCHAR2(100),
    SYMB_GIF_HI BLOB,
    SYMB_GIF_LOW BLOB,
    constraint PK_T_K58_SYMBOLE primary key (SYMB_ID)
    LOB (SYMB_GIF_HI, SYMB_GIF_LOW) STORE AS (tablespace TDK5813)
    tablespace TDK5811
    Please, i need help!!!!

    This is my control file. I'm loading images in database table using sqlldr in Unix:
    LOAD DATA
    INFILE 'sampledata.dat'
    INTO TABLE image_table
    APPEND
    FIELDS TERMINATED BY ',' optionally enclosed by '"'
    IMAGE_ID INTEGER EXTERNAL,
    FILE_NAME CHAR,
    IMAGE_DATA LOBFILE(FILE_NAME) TERMINATED BY EOF
    I'm facing following error:
    SQL*Loader-350: Syntax error at line 9.
    Expecting "," or ")", found "LOBFILE".
    IMAGE_DATA LOBFILE(FILE_NAME) TERMINATED BY EOF
    My data file is:
    1,"IMG_3126.jpg"
    2,"IMG_3127.jpg"
    3,"IMG_3128.jpg"
    and images are in the same server. please help me to get out of this.
    Thanks,
    Surjeet Kaur

  • How to skip text files in  sql table ?

    Hi,
    I am using 10g developer suite. How to skip the record in to sql table from txt file ? Table has primary key concept.
    At present I am skipping the record via sql loader. Is there any way in the forms like plsql coding ?
    Warm regards
    vasanth.

    So I'm guessing you are loading a text file into a database table using SQL*Loader and using the skip funcionality to skip records you don't want loaded. Now you want to do something similar in PL/SQL?
    You could take a look at External Tables which will allow you to specify the text file as an external table and skip rows just the same as SQL*Loader, but you can query directly from it, or you could go the long winded way about it and use the UTL_FILE package to open the file, read lines of data and process those lines yourself choosing whether to skip lines and which ones you want to insert into a table etc.

  • OCIStmtFetch  SQL*Loader Error

    I am getting the following error when running sql loader. The SQL Loader Version we are using is Release 9.0.1.
    I am using the DIRECT option for SQL Loader and I am using the TRIM option to load some columns.
    SQL*Loader-961: Error calling once/load finishing for table "TABLE_NAME"
    ORA-03113: end-of-file on communication channel
    SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
    SQL*Loader-925: Error while uldlgs: OCIStmtExecute (ptc_hp)
    ORA-03114: not connected to ORACLE
    SQL*Loader-925: Error while uldlgs: OCIStmtFetch (ptc_hp)
    ORA-24338: statement handle not executed
    Thanks a lot.

    If your operating system is OPEN VMS, please see note:188422.1 on metalink. You have to install the 9.0.1.3.0 patchset.

  • SQL*Loader - Skipping columns in the source file.

    Hi
    I have a comma delimted source file with 4 columns. I however only want to load columns 2 and 3 into my table using SQL*Loader. This seems like something that should be fairly simple but I can't seem to find any doc or examples of this.
    Any guidance would be appreciated.
    Thanks
    Dave

    Hello Dave,
    Here is a sample of what you'll need to have in your control fileLOAD DATA
    APPEND
    INTO TABLE <target_table>
    FIELDS TERMINATED BY ','
    ( column_1  FILLER
    , column_2
    , column_3
    , column_4  FILLER
    )Hope this helps,
    Luke

  • SQL Loader Inserts chr(13) and chr(10) in the first column of every row.

    Hi,
    I have exported a data in a pipe delimited file using TOAD in one database. Now I want to load the data in my local database using SQL Loader. However every time I try to load the data a double quote followed by a new line is entered for the first column of each row. Unfortunately the delimited file is very big and hence can't be posted here. However I tried the same with a customized table and its data and found the same problem. Below are the table structures and control file that I used.
    create table test_sql
    a varchar2(30),
    b date
    insert into test_sql values('51146263',sysdate-3);
    insert into test_sql values('51146261,sysdate-1);
    EXPORTED PIPE DELIMITED FILE_
    A|B|!##!
    51146261|04/14/13 4:55:18 PM|!##!
    51146263|04/12/13 4:55:32 PM|!##!
    create table test_sql1 as select * from test_sql where 1=2;
    CONTROL FILE_
    OPTIONS(SKIP=1)
    LOAD DATA
    INFILE 'C:\Users\Prithwish\Desktop\Test.txt' "str '!##!'"
    PRESERVE BLANKS
    INTO TABLE TEST_SQL1
    FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS
    A CHAR(2000),
    B DATE "MM/DD/YYYY HH12:MI:SS AM"
    select * from TEST_SQL1;
    After this when I paste it in notepad I get the following result
    A B
    51146261"     14-APR-0013 16:55:18
    51146263"     12-APR-0013 16:55:32.
    I have no idea how the quotes or the newline appear. Is this a Toad bug? Any help would be greatly appreciated. Really urgent.
    Thanks in advance
    Regards

    Hi Harry,
    I actually thought that the str !##! was causing the problem. Actually my original export has some new lines in some specific columns so I can't keep the new line as my line terminator and hence I kept the !##! as my terminator.
    When I put the same data in a notepad and load it there is no problem at all. For e.g I just typed the following in a notepad and the data loaded just fine.
    A|B|!##!
    51146261|01-01-01 10:10:10 AM|!##!
    51146263|01-01-01 11:11:11 AM|!##!
    Its just when I load the exported file there the problem arises though I have verified the file using UNIX as well using octal dump and found no hidden characters.
    Regards,
    Prithwish

Maybe you are looking for

  • Weblogic: problem with JMS foreign server and Transaction

    Hello everyone, I am working with an enterprise application with Web Application Server Logic 10.3. L 'application uses the following components: 1) MDB 2.0 2) FOREIGN JMS SERVER -> WebSpereMQ 3) EJB SESSION L 'MDB calls the session bean which uses i

  • Problem when I make Read Only Property True

    Dear Members, I have an OAF Page on which I have the below two items: 1/ item1 2/ item2 These two items are message input text items and these two items will always have some value. To meet one of my requirement, I am making the READ ONLY property of

  • SOAP Receiver issue

    Hi, I am working on the scenario Proxy to SOAP. While sending the data, we are getting the below error in receiver SOAP communication channel. Message processing failed. Cause: javax.ejb.TransactionRolledbackLocalException: nested exception is: java.

  • How to put the trace messages in JSP DynPage

    Hi, How to put the trace messages in JSP DynPage components. What settings I need to do and where do I see the trace log. Can I also print the values of some variables in trace. If yes, how to achieve this? Thanks in advance, Regards, Madhu

  • Blackberry Curve 8520 not working correctly

    My Blackberry Curve 8520 is not working correctly. It has worked on and off for about 2 days now. The first thing to stop was the media files - at first it said the SD card was inserted, but couldn't find any files. I've tried repairing the card. The