How to specify a constant value in the external tables?

Create table cp_portfolio_ext
(
rec_type                                                varchar2(1),
acct_nbr                                                varchar2(23),
acct_title                                              varchar2(50),
prod_type_cd                                            varchar2(5),
acct_desc                                               varchar2(35),
country_code                                            varchar2(2),
acct_ref_ccy_cd                                         varchar2(3),
nom_accr_int_amt                                        number(20,4),
ineligible_cash                                         number(20,4),
pldg_amt                                                number(20,4),
posn_as_of_dt                                           date,
moody_rating                                            varchar2(5),
sp_rating                                               varchar2(4),
mat_dt                                                  date,
anl_pct_rt                                              number(20,6),
acct_pp_cd                                              varchar2(10),
filler                                                  varchar2(229),
process_status                                                  char(1)
)
Organization External
(
type                    oracle_loader
default directory     TEST_DIR
access parameters
                    (
                         records delimited by newline
                         fields
                              (
                              REC_TYPE                            POSITION(1:1),
                              ACCT_NBR                            POSITION(2:24),
                              ACCT_TITLE                          POSITION(25:74),
                              PROD_TYPE_CD                        POSITION(75:79),
                              ACCT_DESC                           POSITION(80:114),
                              COUNTRY_CODE                        POSITION(115:116),
                              ACCT_REF_CCY_CD                     POSITION(117:119),
                              NOM_ACCR_INT_AMT                    POSITION(120:139),
                              INELIGIBLE_CASH                     POSITION(140:159),
                              PLDG_AMT                            POSITION(160:179),
                              POSN_AS_OF_DT                       POSITION(180:187) DATE "DDMMYYYY" NULLIF POSN_AS_OF_DT ='00000000',
                              MOODY_RATING                        POSITION(188:192),
                              SP_RATING                           POSITION(193:196),
                              MAT_DT                              POSITION(197:204) DATE "DDMMYYYY" NULLIF MAT_DT = '00000000',
                              ANL_PCT_RT                          POSITION(205:215),
                              ACCT_PP_CD                          POSITION(216:225),
                              FILLER                              POSITION(226:454),
                              process_status               
                              )
                    )
location('ODS_CP_DAILY_EXTRACT.DAT')
)reject limit unlimited;
I won't receive flow file process_status, but I would like to have a value by default "n" must be provided. How to get there? I tried to use defaultif, but it does not work it.

I know that you donw with the CONSTANT Keywork using sqlloader. But what in external tables. ??

Published by: 792353 on September 30, 2010 21:21

I think it should useful to you

http://Jiri.WordPress.com/2010/03/29/Oracle-external-tables-by-examples-part-4-column_transforms-clause-load-CLOB-BLOB-or-any-constant-using-external-tables/

Iqbal

Tags: Database

Similar Questions

  • How to use setViewportBounds (Bounds value) to the ScrollPane?

    How to use setViewportBounds (Bounds value) to the ScrollPane? This method is, visually, what for? I tried to put a specific Bounds.minY to have a precise scrolling in the axis Y in vain. I use the setVvalue() method to scroll, but it is not convenient to exactly locate a position in the coordinates of the node content listed in the scroll pane.

    The viewportBounds are the limits of the viewport (i.e., the visible part of the content) in the scrolling pane itself, if I understand correctly. The way to access programmatically is by setting the vValue property.

    I have not tried, but if you do something like

    scrollPane.setVmin(0);
    DoubleBinding vmax = new DoubleBinding() {
         { super.bind(scrollPane.viewportBounds(), content.heightProperty()); }
         @Override
         public double computeValue() {
            return content.getHeight() - scrollPane.getViewportBounds().getHeight() ;
         }
    };
    scrollPane.vmaxProperty().bind(vmax);
    

    to configure your component to scroll, then you can call setVvalue (...) and just pass a location of coordinates for your content node. This assumes that your content node is a region or a control; you will have to perhaps a little logic in the method computeValue() to deal with the cases where the display window is greater than the additional content.

  • How to assign values to the nested table and passes as a parameter for the procedure?

    How to assign values to the nested table and passes as a parameter for the procedure?

    Here are the object and its type

    create or replace type test_object1 as an object
    (
    val1 varchar2 (50).
    val2 varchar2 (50).
    VARCHAR2 (50) val3
    );


    create or replace type test_type1 is table of the test_object1;


    create or replace type test_object2 as an object
    (
    val1 varchar2 (50).
    val2 varchar2 (50).
    VARCHAR2 (50) val3
    );


    create or replace type test_type2 is table of the test_object2;


    GRANT ALL ON test_object1 to PUBLIC;


    GRANT ALL ON test_type1 to PUBLIC;


    GRANT ALL ON test_object2 to PUBLIC;


    GRANT ALL ON test_type2 to PUBLIC;

    Here is the table object type:

    create the table test_object_tpe
    (
    sl_num NUMBER,
    Description VARCHAR2 (100),
    main_val1 test_type1,
    main_val2 test_type2
    )


    NESTED TABLE main_val1 STORE AS tot1
    NESTED TABLE main_val2 STORE AS earlier2;


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

    Here is the procedure that inserts values into the nested table:

    PROCEDURE INSERT_TEST_DATA (sl_num in NUMBER,
    Description in VARCHAR2,
    p_main_val1 IN test_type1,
    p_main_val2 IN test_type2
    )
    IS
    BEGIN

    FOR rec in p_main_val1.first... p_main_val1. Last
    LOOP

    INSERT INTO xxdl.test_object_tpe
    (
    sl_num,
    Description,
    main_val1,
    main_val2
    )
    VALUES
    (
    sl_num
    description
    test_type1 (test_object1)
    p_main_val1 .val1 (CRE),
    p_main_val1 .val2 (CRE),
    p_main_val1 .val3 (rec)
    )
    )
    test_type2 (test_object2 (p_main_val2 .val1 (CRE),
    p_main_val2 .val2 (CRE),
    p_main_val2 .val3 (rec)
    )
    )

    );

    END LOOP;

    commit;

    END INSERT_TEST_DATA;

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

    Here are the block anonymoys what values attributed to the object type and pass values in the procedure:

    Set serveroutput on;

    declare

    p_sl_num NUMBER: = 1001;
    p_description VARCHAR2 (50): = 'Test Val1;

    inval1 test_type1: = test_type1();
    inval2 test_type2: = test_type2();

    Start


    inval1 (1) .val1: = "testx1";
    inval1 (1) .val2: = "testx2";
    inval1 (1) .val3: = "testx3";

    inval2 (1) .val1: = "testy1";
    inval2 (1) .val2: = "testy2";
    inval2 (1) .val3: = "testy3";

    CSI_PKG. INSERT_TEST_DATA (sl_num = > p_sl_num,)
    Description = > p_description,
    p_main_val1 = > inval1,
    p_main_val2 = > inval2
    );

    end;
    /
    Someone can correct me.

    Thank you
    Lavan

    Thanks for posting the DOF and the sample code but whenever you post provide your Oracle version 4-digit (result of SELECT * FROM V$ VERSION).
    >
    How to assign values to the nested table and passes as a parameter for the procedure?
    >
    Well you do almost everything bad that could be hurt.

    Here is the code that works to insert data into your table (the procedure is not even necessary).

    declare
    p_sl_num NUMBER := 1001;
    p_description VARCHAR2(50) := 'Testing Val1';
    inval1 test_type1 := test_type1();
    inval2 test_type2 := test_type2();
    begin
    inval1.extend();
    inval1(1) := test_object1('testx1', 'testx2', 'testx3');
    inval2.extend();
    inval2(1) := test_object2('testy1', 'testy2', 'testy3');
    
    INSERT INTO test_object_tpe
    (
    sl_num,
    description,
    main_val1,
    main_val2
    )
    VALUES
    (p_sl_num, p_description, inval1, inval2);
    commit;
    end;
    /
    

    See example 5-15 making reference to an element of nested Table Chapter 5 using PL/SQL collections and records in the PL/SQL doc
    http://docs.Oracle.com/CD/B28359_01/AppDev.111/b28370/Collections.htm#CJABEBEA

    1. you don't even have the procedure because it is a simple INSERTION in the table you can do directly (see my above code)

    inval1(1).val1 := 'testx1';
    

    Since you have not yet created all the elements, there is no element 1 "inval1". You need EXTEND the collection to add an element

    inval1.extend();
    

    And then, there is an empty element, but "inval1" is a container for objects of type 'test_object1' not for scalars as "val1", "val2", and "val3".
    If you can not do

    inval1(1).val1 := 'testx1';
    

    You must create an instance of 'test_object1 '.

    inval1(1) := test_object1('testx1', 'testx2', 'testx3');
    

    And so on for the other collection

    You don't need the procedure (as my code example shows), but once you fill in the variables correctly it will work.

  • How Oracle to store geometry values in the columns of the table?

    How Oracle to store geometry values in the columns of the table?

    Check this box:
    [Oracle Spatial User guide | http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14255/toc.htm]

    Check other documents space here.
    [http://www.oracle.com/pls/db102/portal.portal_db?selected=7]

    Published by: Anantha R on August 20, 2009 13:43

  • How to fill the value in the nested table by using the object type


    Hi gurus

    I created an object type and able to fill the values in it, now I want to create a nested table type of this object and fill it but looks like I'm doing something wrong, see my code below.

    Code example

    CREATE or REPLACE TYPE countries_o
    AS
    OBJECT
    (
    COUNTRY_ID TANK (2 BYTES),
    COUNTRY_NAME VARCHAR2 (40 BYTE),
    REGION_ID NUMBER);
    /

    create or replace type countries_t is table of the countries_o;

    /

    CREATE OR REPLACE

    ABC of the PROCEDURE

    IS

    v_print countries_t; -: = arr_countries_t('01','Aus',1);

    BEGIN

    v_print: = countries_t('01','A',11);

    DBMS_OUTPUT. Put_line (v_print. COUNTRY_ID | v_print. COUNTRY_NAME | v_print. REGION_ID);

    END;

    /

    Error

    • Error (6.3): PL/SQL: statement ignored
    • Error (6,12): PLS-00306: wrong number or types of arguments in the call to 'COUNTRIES_T '.
    • Error (7.3): PL/SQL: statement ignored
    • Error (7.32): PLS-00302: component 'COUNTRY_ID' must be declared

    Thanks in advance

    Concerning

    Muzz

    Hi user,

    Here is another method that you can try-

    CREATE OR REPLACE

    ABC of the PROCEDURE

    IS

    v_print countries_t: = countries_t (countries_o('01','A',11));

    BEGIN

    DBMS_OUTPUT. Put_line (v_print (1).) COUNTRY_ID | v_print (1). COUNTRY_NAME | v_print (1). REGION_ID); -you're accessinf the first element of the nested table, which in turn points to the object.

    END;

    In the sections of the declaration you have assigned values to the nested table.

    Kind regards
    Maxou

  • Referencing of the values of the dynamic tables

    Hi you all!

    I am building a form for one of my clients. It is divided into three languages depending on who fills out the form.

    You can start of Poland then switch to English and watch that all filled. Someone else can do the same thing

    but starts of English and following pages in Polish. There is also a German part in it.

    Previously, it was a static form for each value had been spread between parts of a document

    by linking it as global.

    Now I have a dynamic PDF with dynamic arrays. I have to generate rows in the same table

    in each languages part and a person who can go to any language (part of the document).

    I enclose a small example of two subforms. Each represents the different language version. Buttons

    each of them can add rows in both tables at the same time.

    I tried to write formulas for cells to Exchange data between. In this example, this works. When I import these

    subforms in my real paper, that it stops working.

    How can I bind values between cells of these tables to use both ways, from any of them?

    Any part must copy a value of corresponding cells, both ways.

    http://strony.Aster.pl/Wystawa/www/tables_example.PDF

    Kind regards

    Sylwester Zacheja

    Hello

    There is here an example that might be of help to you: https://acrobat.com/#d=hkeDKn6SRo1FAvFUoY6Smw

    If you look at the script in the second print button, you will see how she fills in the values of the visible table to a hidden table.

    Also this example can help: https://acrobat.com/#d=z9JRAb-7bKkdBwRHM4EHGw

    Niall

  • charge of the external table

    I load a file .csv to table data.
    I tried to load it using EXTERNAL TABLES

    Is there a way to specify null in the external tables loaded if the column has no data queued (CSV) external loading
    Thank you

    Do you mean?

    MISSING FIELD VALUES ARE NULL
    
  • When to load the external table condition


    Hello

    Is my version of db: oracle 11g

    I have a 6 gig csv file.

    I divided it several 15 MB csv files.

    But only the first csv file has header (with column headers).

    I have to load each of these files into a target table.

    I created an external table with jump 1.

    But how can I substitute jumping 1 for other csv files.

    Is there a way I can do it in the external table definition.

    I can't merge the split csv files and run as one big file. So I don't hv this option. Please advice.

    You should be able to use the LOAD WHEN clause to exclude a line based on the contents of a field. Or the other

    WHEN LOAD 1 / 2! = "ID".

    or, if the bonds are quoted,

    WHEN LOAD 1:4! = « « ID » »

    or you can always add a list of fields to your specifications and the names of the fields in the reference LOAD WHEN the condition instead of using an absolute position.

    Don't know if you saw my comments on the use of the tail command before you replied, but if the break-up of the file is part of your project of automated process, and then deleting the header row could certainly be integrated into this process if your on a unix platform and using the split command to split the file.

    Kind regards

    Bob

  • Using the external table error

    Hi all

    This is the first time I use the external table for loading the data.

    I did these steps

    In the D:\sqlloade folder, I have my text file containing data example.txt

    I ran these queries

    CREATE OR REPLACE DIRECTORY  ext_tab_data AS 'D:\sqlloader';
    
    

    Directory created

    CREATE TABLE fxops.t_ext (
    t number
    )
    ORGANIZATION EXTERNAL (
      TYPE ORACLE_LOADER
      DEFAULT DIRECTORY ext_tab_data
      ACCESS PARAMETERS (
        RECORDS DELIMITED BY NEWLINE
        FIELDS TERMINATED BY ','
        MISSING FIELD VALUES ARE NULL
        (
         t number
        )
      )
      LOCATION ('sample.txt')
    )
    PARALLEL 5
    REJECT LIMIT UNLIMITED;
    
    

    create table

    When I tried to create a view on that table, he throws an error

    CREATE OR REPLACE VIEW fxops.t_view  AS
      SELECT *
      FROM   fxops.t_ext;
    
    SQL Error: ORA-06564: object EXT_TAB_DATA does not exist
    06564. 00000 -  "object %s does not exist"
    *Cause:    The named object could not be found.  Either it does not exist
               or you do not have permission to access it.
    *Action:   Create the object or get permission to access it.
    
    

    Sign in, and then run this:

    Select HOST_NAME from v$ instance;

    is this the same hostname that you are connected?

    Kind regards

    Harry

  • identify the external table

    Hello

    In my schema contains a collection of tables and external tables. How can we identify a table is a normal (or) table external?

    Thank you
    Rajesh

    Pascale says:
    Hello

    In my schema contains a collection of tables and external tables. How can we identify a table is a normal (or) table external?

    Thank you
    Rajesh

    [url http://www.oracle.com/pls/db102/search?remark=quick_search&word=ALL_EXTERNAL_TABLES&tab_id=&format=ranked] ALL/DBA/USER_EXTERNAL_TABLES contain details of the external Tables.

  • Using the external Table

    Oracle 11.2.0.1
    Windows 7 Edition Home Premium 64-bit

    On every weekend, we get a file with the text like this:
    CUST_NAME:M/S ABC & COMPANY
    --------------------------------------------------------------------------------
    PROD_ID                              PR_05          STEAM_PIPE                              
    BILL_AMOUNT_ADVANCE                    1245.07          WITH VAT     
    BILL_DATE                         17-03-2011     
    GOODS_DELIVERED_ON                    20-03-2011     HAPPY CARGO
    
    
    CUST_NAME:M/S XYZ & COMPANY
    --------------------------------------------------------------------------------
    PROD_ID                              PR_09          PAPER_BAGS                              
    BILL_AMOUNT_CREDIT                    4000.07          WITHOUT VAT     
    BILL_DATE                         17-03-2011     
    GOODS_DELIVERED_ON                    20-03-2011     SHIVAM COURIER
    
    ...
    All ABOUT 100-125 billing information for our various regional staffs.

    We need an external table something like this:

    CREATE TABLE REGIONS_SALE
    (
    COL1 VARCHAR2 (40),
    COL2 VARCHAR2 (30),
    COL3 VARCHAR2 (15).
    COL4 VARCHAR2 (20)
    );

    And data should looks like this:

    Select * from REGIONS_SALE;
    COL1                    COL2                    COL3          COL4
    ABC & COMPANY               PROD_ID                    PR_05          STEAM_PIPE     
    ABC & COMPANY               BILL_AMOUNT_ADVANCE          1245.07          WITH VAT
    ABC & COMPANY               BILL_DATE               17-03-2011
    ABC & COMPANY               GOODS_DELIVERED_ON          20-03-2011     HAPPY CARGO
    XYZ & COMPANY               PROD_ID                    PR_09          PAPER_BAGS
    XYZ & COMPANY               BILL_AMOUNT_CREDIT          4000.07          WITHOUT VAT
    XYZ & COMPANY               BILL_DATE               17-03-2011     
    XYZ & COMPANY               GOOD_DELIVERED_ON          20-03-2011     SHIVAM COURIER
    Kindly help me, how to create the external table with the name of firms repeated in the COL1 of fixed length text file.

    Thanking you.

    One way is to create a view:

    SQL> CREATE TABLE TEST_EXT
      2  (
      3    str  VARCHAR2(4000 BYTE),
      4    RN         NUMBER
      5  )
      6  ORGANIZATION EXTERNAL
      7    (  TYPE ORACLE_LOADER
      8       DEFAULT DIRECTORY TESTDIR
      9       ACCESS PARAMETERS
     10         ( RECORDS DELIMITED BY NEWLINE
     11            BADFILE 'test.bad'
     12            LOGFILE 'test.log'
     13            NODISCARDFILE
     14            READSIZE 1048576
     15            FIELDS LDRTRIM
     16            REJECT ROWS WITH ALL NULL FIELDS
     17                ( str         (1:4000)     CHAR(4000),
     18                  rn recnum
     19         )                )
     20       LOCATION (TESTDIR:'test.txt')
     21    );
    
    Table created.
    
    SQL> create or replace view test_vu as
      2  select col1,col2,col3,col4
      3  from(
      4      select str,max(case when str like 'CUST_NAME:%' then replace(str,'CUST_NAME:') else null end) over(partition by sm) col1,
      5             regexp_substr(str,'[^   ]+') col2,regexp_substr(str,'[^ ]+',1,2) col3,regexp_substr(str,'[^     ]+',1,3) col4
      6      from(
      7          select sum(case when str like 'CUST_NAME:%' then 1 else 0  end ) over(order by rn) sm,t.*
      8          from TEST_EXT t
      9          where str like 'CUST_NAME%'
     10          or str like 'PROD_ID%'
     11          or str like 'BILL_AMOUNT%'
     12          or str like 'BILL_DATE%'
     13          or str like 'GOODS_DELIVERED%'
     14         )
     15       )
     16  where str not like 'CUST_NAME:%';
    
    View created.
    
    SQL> select * from test_vu;
    
    COL1                                     COL2                      COL3                           COL4
    ---------------------------------------- ------------------------- ------------------------------ ------------------------------
    M/S ABC & COMPANY                        PROD_ID                   PR_05                          STEAM_PIPE
    M/S ABC & COMPANY                        BILL_AMOUNT_ADVANCE       1245.07                        WITH VAT
    M/S ABC & COMPANY                        BILL_DATE                 17-03-2011
    M/S ABC & COMPANY                        GOODS_DELIVERED_ON        20-03-2011                     HAPPY CARGO
    M/S XYZ & COMPANY                        PROD_ID                   PR_09                          PAPER_BAGS
    M/S XYZ & COMPANY                        BILL_AMOUNT_CREDIT        4000.07                        WITHOUT VAT
    M/S XYZ & COMPANY                        BILL_DATE                 17-03-2011
    M/S XYZ & COMPANY                        GOODS_DELIVERED_ON        20-03-2011                     SHIVAM COURIER
    
    8 rows selected.
    
  • Error importing CSV files with "hidden" characters using the external Table

    Hi people

    Bit of a strange here.

    Well, we are accustomed to the use of the external Table method to load data from CSV files in the database, but a recent event presented us a problem.

    We have received some CSV files that "look like" regular CSV files, but Oracle will not load them.

    When we looked at the CSV using VIM on a UNIX machine, we saw the following characters 'hidden' between each regular character in the file.
    ^@
    If a string that looks like this when opened in Excel/Wordpad etc.
    "TEST","TEXT"
    Looks like this when exmained with VIM
    ^@"^@T^@E^@S^@T^@"^@,^@"^@T^@E^@X^@T^@"
    Has anyone encountered this before?

    Thank you very much

    Simon Gadd
    Oracle 11g 11.2.0.1.0

    Hi Simon,.

    ^ @ represents the ZERO character (0x00).
    So, most likely, you have a file encoded in Unicode.

    You need to specify the character set in the record specification (and if necessary the byte order mark), for example:

    CREATE TABLE ext_table
    (
      col1 VARCHAR2(10),
      col2 VARCHAR2(10)
    )
    ORGANIZATION EXTERNAL
    (
      TYPE ORACLE_LOADER
      DEFAULT DIRECTORY dump_dir
      ACCESS PARAMETERS
      (
       RECORDS DELIMITED BY '
    ' CHARACTERSET 'UTF16'
      FIELDS TERMINATED BY ','
      )
      LOCATION ('dump.csv')
    )
    REJECT LIMIT UNLIMITED;
    

    http://download.Oracle.com/docs/CD/E11882_01/server.112/e16536/et_params.htm#i1009499

  • missing scenario of the external table file

    Hi What is happening...

    When we access the external table, and the file is not present... it throws an error? It simply returns the rows null?


    If I know I will get 5 files a.txt b.txt, c.txt, d.txt, .txt, and then I can put in the location

    LOCATION ('a.txt ',' b.txt ',' c.txt ',' d.txt', ' e.txt") creating the external table


    If for example b.txt and c.txt are not present at the time of access, it will throw an error or it just shows me the records of a, d and e?

    concerning
    REDA

    Raj,

    If you have missing files, you select will return an error. So make sure that file, even if its empty.

    You will see the following error

    CREATE TABLE ext_tab (
       empno CHAR (4),
       ename CHAR (20),
       job CHAR (20),
       deptno CHAR (2)
    )
    ORGANIZATION EXTERNAL
       ( TYPE oracle_loader DEFAULT DIRECTORY EXPORT_DIR ACCESS PARAMETERS (
       RECORDS DELIMITED BY NEWLINE BADFILE 'bad_%a_%p.bad' LOGFILE
       'log_%a_%p.log' FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL
       REJECT ROWS WITH ALL NULL FIELDS ( empno  ,
       ename ,
       job   ,
       deptno) ) LOCATION ( 'emp.dat','emp.dat1' ) );
    
    select * from ext_tab;
    
    ORA-29913: error in executing ODCIEXTTABLEOPEN callout
    ORA-29400: data cartridge error
    KUP-04040: file emp.dat1 in EXPORT_DIR not found --> emp.dat1 doesn't exist but emp.dat exists
    ORA-06512: at "SYS.ORACLE_LOADER", line 19
    

    Concerning

  • The external Table storage

    Since data is stored outdoors, and the definition that is stored inside, it means that a the table structure of the outer table is stored in the database as well (or a virtual table based on the definition of the external table...)

    I'll hit the ORA-DOCS again once, back in the external tables read tonight on them 2 or 3 sources and it is not quite clear whether real data with structure exists outside the database or an internal table set (and stored) retrieves data from an outside source.

    Since data is stored outdoors, and the definition that is stored inside, it means that a the table structure of the outer table is stored in the database as well (or a virtual table based on the definition of the external table...)

    The 'definition' you refer to IS the structure of the table; they are one and the same. There is no 'table' stored in the database using space or storage. When a query on an external table is executed, the data source is read.

    
    I'll be hitting the ORA-DOCS up again, just got back into external tables tonight reading up on them from 2-3 sources and it is not quite clear if an actual data with structure exists out of the database , or an internally defined (and stored?) table draws data from an outside source.
    

    I suggest you that start with the documentation of Oracle - including the ground provided the link to:

    If any "metadata" are stored outside the database depends on if the file that is outside of the database was produced by Oracle using the robot UNLOADING discussed in this doc

    Unloading of data using ORACLE_DATAPUMP Access driver

    To unload data, you use the ORACLE_DATAPUMP driver access. The stream that is discharged is in a proprietary format and contains all of the data column for each row being unloaded.

    A discharge operation also creates a stream of metadata that describes the content of the data stream. The information in the metadata stream are required to load the stream. Therefore, the metadata stream is written to the file data and placed before the data stream.

    If YOU provide data/files, then you MUST provide it in the format expected by the external table statement. You can, if you wish, use a preprocessor to convert ANY file (zip, encrypted, etc.) in the required format.

    For YOUR files, you can the metadata stored in the same file, or elsewhere, if you choose, but Oracle will have NO knowledge of this fact and not will NOT be involved in the transformation or read any of the metadata that you provide. Your preprocessor must remove all these metadata and ONLY provide data in the format appropriate for Oracle to use.

    If the file was produced by the process of UNLOADING Oracle then it will include metadata that Oracle WILL read, use, and remove as says this quote from doc above. These external metadata is added to the real external table definintion/metadata stored in the dictionary.

  • Key issue of the external table preprocessor - ssh

    I want an external table that runs a df command in a script

    DFH.sh more

    / bin/df h

    CREATE TABLE XT_df

    (

    SCRIPT_OUTPUT VARCHAR2 (2000)

    )

    EXTERNAL ORGANIZATION

    (TYPE ORACLE_LOADER

    Datapumpdir default DIRECTORY

    ACCESS SETTINGS

    (RECORDS DELIMITED BY NEWLINE

    PREPROCESSOR datapumpdir: 'dfh.sh'

    jump 1

    FIELDS TERMINATED BY ', '.

    surrounded of possibly "" "

    )

    LOCATION (datapumpdir: 'xtdf.dat')

    )

    Select * from XT_df

    And it works.  I see my df output.

    I want to run something similar on multiple hosts, but the same host, so I place another table and call another shell script to run a remote ssh script after I have set user equivalence

    / usr/bin/SSH oracle@remotehost1 ' df-h | grep u02'

    the works of shell script

    However, qualifying by selecting in the external table I get ssh host checking has no error.

    [Error] Run (1: 1): ORA-29913: error in executing ODCIEXTTABLEFETCH legend

    ORA-29400: data cartridge error

    KUP-04095: order of preprocessor /winlogs/dfh.sh has detected the error "host key verification failed.

    "

    So what could be the cause that if she works well as oracle from command line, checking the .ssh key is on the other side (I think).

    > Datapumpdir: 'dfh.sh PREPROCESSOR'

    Modify the script above to include the following line as the second line of the script

    env | Tri o /tmp/capture.env

    view the contents of /tmp/capture.env return here after it gets filled

Maybe you are looking for