The issue of external Table...

Hello world

I am new to working on 'EXTERNAL TABLES'. Is it possible to add another column (what is not
in the flat file) with a "default"?

I'm just trying to create a simple TABLE 'EXTERNAL '...

question 1
==========
EX:
===

Flat file that i get will be like this (sample)

ENG,England,English
SCO,Scotland,English
IRE,Ireland,English
WAL,Wales,Welsh

If i create a external table like the following everyting would be fine..

CREATE TABLE countries_ext (
  country_code      VARCHAR2(5),
  country_name      VARCHAR2(50),
  country_language  VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY ext_tables
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (
      country_code      CHAR(5),
      country_name      CHAR(50),
      country_language  CHAR(50)
    )
  )
  LOCATION ('Countries1.txt','Countries2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;

but i need another column with a "default value" "N"  which is not in flat file

CREATE TABLE countries_ext (
  country_code      VARCHAR2(5),
  country_name      VARCHAR2(50),
  country_language  VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY ext_tables
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (
      country_code      CHAR(5),
      country_name      CHAR(50),
      country_language  CHAR(50)
    --,
    -- Valid_flag default value "N"  Is it possible to add this 
                                     column while creating the external table?
                                     this column is not there in the flat file.
    )
  )
  LOCATION ('Countries1.txt','Countries2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;
quetion2
========

 LOCATION ('Countries1.txt','Countries2.txt')

I have multiple files (around 150) which are in the same format.
Do i have to mention all the file names in the location clause? if i have to create a table 
on those 150 file?

Ex  LOCATION ('Countries1.txt','Countries2.txt','Countries3.txt','Countries4.txt','Countries5.txt','Countries6.txt','Countries7.txt','Countries8.txt', and so on....)

or 

Is it possible to put (countries*.txt)?
Sorry if this topic discussed somewhere in the forum.

Thank you
Phani

The external table requires the exact name of the file, it does not accept wildcards. If filenames are stable, just take the hit and list them all in the LOCATION once. If the file names are fungible Pretreat then screwed by them cutting in a single file, which is the only name in the LOCATION clause.

Cheers, APC

blog: http://radiofreetooting.blogspot.com

Tags: Database

Similar Questions

  • With the help of external Tables

    HELO - I have a few questions regarding the use of external tables, as I have not worked with them before.

    From what I read, looks like they are more intended instead of SQL Loader, to simply load the data. But I was wondering if they are also used for queries. I ask because we usually create temporary tables to load the data provided by the company and we then attach this information to our main tables. The file that we just received is more 3 million lines, so I was wondering if it might be appropriate to use an external table and also, I can query this external table directly or will it still my temporary table as well.

    In addition, it's the syntax that I found to create an external table and I was wondering if something escapes me.
    SQL> create table xtern_empl_rpt
      2      ( empl_id varchar2(3),
      3        last_name varchar2(50),
      4        first_name varchar2(50),
      5        ssn varchar2(9),
      6       email_addr varchar2(100),
      7        years_of_service number(2,0)
      8      )
      9      organization external
     10      ( default directory xtern_data_dir
     11        access parameters
     12        ( records delimited by newline
     13          fields terminated by ','
     14        )
     15        location ('employee_report.csv')  
     16    );
    I appreciate all the comments...

    Thank you!
    Christine

    Hello

    Based on what I read

    It would be good to know what you have read sofar and where...

    I can query this external table directly

    Yes, once you have created.
    An external table allows to process a file as if it were a table.
    Don't forget that you can query only, you can not the update/delete/insert in an external table.

    You can find many examples by searching on this forum,
    or http://asktom.oracle.com
    (for example: http://asktom.oracle.com/pls/asktom/f?p=100:11:0:::P11_QUESTION_ID:6611962171229))
    or http://www.oracle-base.com/articles/9i/ExternalTables9i.php
    or the Oracle Documentation @ http://tahiti.oracle.com

  • -Order of the lines of external tables

    Hi all

    I have a request that copies of the user DB files and then system file it opens as external table... The following data flow is to copy the data from this external table and perform actions on this issue.
    My question is that I have to report line number, where an error has occurred and this line number must match the number of physical lines in the file... Can I rely on the fact that if I do something like
    SELECT rownum, t.* FROM ext_table t
    the ROWNUM will correspond to the line number in the file. I'm just a question because it is not documented anywhere.

    I'm under Oracle XE, but we will probably move to 11g (or something never) in the future.

    Thank you
    Adam

    You can add a column in the external table and use the RECNUM parameter to fill. Then use ORDER BY this column for lines in the same order that they are in the source file.

    SY.

  • Remove the log from external Table file?

    Hello

    I don't want the log file to create each time I use an external table.

    Is is possible?

    You can specify one or more of the following options:

    NOBADFILE NODISCARDFILE NOLOGFILE
    

    In the passage of ACCESS SETTINGS of your table definition.

    I hope this helps!

  • error when reading flat file of external table... "ORA-01849: time must be between 1 and 12"

    My question is - is it possible for me to fix this error at the level of external table definition? Please advice

    Here is the data file I am trying to download...

    KSEA | 08-10 - 2015-17.00.00 | 83.000000 | 32.000000 | 5.800000

    KBFI | 2015-08-06 - 15.00.00 | 78.000000 | 35.000000 | 0.000000

    KSEA | 08-10 - 2015-11.00.00 | 73.000000 | 55.000000 | 5.800000

    KSEA | 08-08 - 2015-05.00.00 | 61.000000 | 90.000000 | 5.800000

    KBFI | 2015-08-06 - 16.00.00 | 78.000000 | 36.000000 | 5.800000

    KSEA | 2015-08-07 - 18.00.00 | 82.000000 | 31.000000 | 10.400000

    KSEA | 08-10 - 2015-00.00.00 | 65.000000 | 61.000000 | 4.600000

    KBFI | 08-08 - 2015-07.00.00 | 63.000000 | 84.000000 | 4.600000

    KSEA | 08-10 - 2015-15.00.00 | 81.000000 | 34.000000 | 8.100000

    This is the external table script

    CREATE TABLE MWATCH. MWATCH. WEATHER_EXT ".

    (

    LOCATION_SAN VARCHAR2 (120 BYTE),

    DATE OF WEATHER_DATETIME,

    NUMBER (16) TEMP.

    NUMBER (16) OF MOISTURE,

    WIND_SPEED NUMBER (16)

    )

    EXTERNAL ORGANIZATION

    (TYPE ORACLE_LOADER

    THE DEFAULT DIRECTORY METERWATCH

    ACCESS SETTINGS

    (records delimited by newline

    BadFile "METERWATCH": "weather_bad" logfile 'METERWATCH': 'weather_log '.

    fields ended by ' |' missing field values are null

    (location_san, WEATHER_DATETIME char date_format DATE mask "YYYY-mm-dd - hh.mi.ss", TEMPERATURE, MOISTURE, wind_speed)

    )

    LOCATION (METERWATCH: 'weather.dat')

    )

    REJECT LIMIT UNLIMITED

    PARALLEL (DEGREE 5 1 INSTANCES)

    NOMONITORING;

    Here is the error in the weather_bad which is generated files...

    column WEATHER_DATETIME of 55 error processing in the 1st row to the /export/home/camsdocd/meterwatch/weather.dat data file
    ORA - 01849ther_log.log 55 56 error processing column WEATHER_DATETIME in the row 1 for the /export/home/camsdocd/meterwatch/weather.dat data file
    5756 ORA - 01849ther_log.log: time must be between 1 and 12
    58column WEATHER_DATETIME 57 error during treatment number 2 for the /export/home/camsdocd/meterwatch/weather.dat data file
    59ORA-58 01849: time must be between 1 and 12
    60column WEATHER_DATETIME of 59 error processing 5th for the /export/home/camsdocd/meterwatch/weather.dat data file
    61ORA-60 01849: time must be between 1 and 12
    62column WEATHER_DATETIME of 61 error treatment in line 6 to the /export/home/camsdocd/meterwatch/weather.dat data file
    63ORA-62 01849: time must be between 1 and 12
    64column WEATHER_DATETIME of 63 error treatment in row 7 for datafile /export/home/camsdocd/meterwatch/weather.dat
    65ORA-64 01849: time must be between 1 and 12
    66column WEATHER_DATETIME of 65 error treatment 9 for the /export/home/camsdocd/meterwatch/weather.dat data file online
    67: time must be between 1 and 12

    My question is - is it possible for me to fix this error at the level of external table definition? Please advice

    Yes it is possible.  Let's not your date mask.  You're masking for 12-hour format when your data is in 24-hour format.  Change the mask of your date to be "YYYY-mm-dd-hh24. MI.ss ".  Notice the change in "BOLD".

  • External table - load a log file with more than 4000 bytes per column

    Hello
    I'm trying to import a log file into a database table that has a single column: txt_line
    In this column, I'm trying to fill out a log by record type entry. Each log entry is normally more than 4000 bytes in the outer table, it should be a clob.
    Below is a table of external work that works, but cut all entries after 4000 bytes. How is it is possible to directly load the data into a clob column? All I've found are descriptions where I have a clob-file by file.
    Any help is appreciated
    Thank you



    Source file
    .. more than 4000 bytes...]] .. .more Quen 4000 bytes...]] .. more than 4000 bytes.

    ]] ist the record delimiter

    External table:
    create the table TST_TABLE
    (
    txt_line varchar2 (4000)
    )
    external organization
    (type
    ORACLE_LOADER
    the default directory tmp_ext_tables
    (settings) access
    records delimited by a "]]"
    fields (txt_line char (4000))
    )
    location ("test5.log")
    )
    reject the limit 0
    ;

    user12068228 wrote:

    I'm trying to import a log file into a database table that has a single column: txt_line
    In this column, I'm trying to fill out a log by record type entry. Each log entry is normally more than 4000 bytes in the outer table, it should be a clob.
    Below is a table of external work that works, but cut all entries after 4000 bytes. How is it is possible to directly load the data into a clob column? All I've found are descriptions where I have a clob-file by file.
    Any help is appreciated
    . . . E t c...

    And what did you expect if you define the field source and target column as 4000 characters?

    Try this:

    CREATE TABLE tst_table
     (
       txt_line CLOB
     )
     ORGANIZATION EXTERNAL
     (TYPE oracle_loader
        DEFAULT DIRECTORY tmp_ext_tables
        ACCESS PARAMETERS (
           RECORDS DELIMITED BY ']]'
           FIELDS (txt_line CHAR(32000))
        )
      LOCATION ('test5.log')
     )
    REJECT LIMIT 0
    ;
    

    8 2

  • External table WHITE vs. NULL

    Hello

    I need help. I have create a portal with a load when the condition and most of the data appears in the external table except those with COL1 that blanks/null.
    First row is not in the external table that make sense.
    However, why second line isn't in the external table? How to put at the disposal of external table? I used load when col1 = BLANKS but no record.

    CSV file
    ABC, 1, 2, 3
    2,3,4
    VDB, 1, 2, 3
    Qwe, 1, 2, 3


    CREATE TABLE TEST
    (COL1 VARCHAR2 (50))
    COL2 VARCHAR2 (50).
    COL3 VARCHAR2 (50).
    COL4 VARCHAR2 (50))
    EXTERNAL ORGANIZATION
    (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY 'INPUTS_DIR' (SETTINGS ACCESS
    RECORDS DELIMITED BY '\r\n' LOADING WHEN
    (
    Col1! = 'abc '.
    )
    NOBADFILE NODISCARDFILE COMPLETED FIELDS NOLOGFILE BY ',' OPTIONALLY
    BOX BY "" "
    AND ' "').
    LOCATION ("test1.csv")
    )
    REJECT LIMIT UNLIMITED;

    Thank you
    AL

    I have miissed OPTIONALLY ENCLOSED BY ' "', so that my solution will not load records as:"

    "", 5,6,7.

    Corrected table definition would be:

    {code}
    CREATE TABLE TEST
    (COL1 VARCHAR2 (50))
    COL2 VARCHAR2 (50).
    COL3 VARCHAR2 (50).
    COL4 VARCHAR2 (50))
    EXTERNAL ORGANIZATION
    (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY ACCESS (SETTINGS TEMP
    RECORDS DELIMITED BY '\r\n' LOADING WHEN
    (
    Col1! = 'abc' OR (1 / 1) = ',' OR (1 / 3) = "" ","
    )
    NOBADFILE NODISCARDFILE COMPLETED FIELDS NOLOGFILE BY ',' OPTIONALLY
    BOX BY "" "
    AND ' "').
    LOCATION ("test1.csv")
    )
    REJECT LIMIT UNLIMITED;
    {code}

    SY.

  • Sqlloader Vs external Tables

    HII All,
    Currently, we use sqlloader. But now we are stuck to the top with a question. The problem is that in our production environment that they have installed customer sqlldr in the application server and the feed file in place in the Oracle server machine.

    We tried everything to stay with sqlloader but nothing works very well. I tried with ftp to transfer the file from Oracle server to the client machine, but we use the secure port it did not work.

    But this was easily accomplished using external table that the file is located in the server. But now I need to satisfy my clients by proving the external tables are relatively better.

    I have google for Sqlloader vs. external this debate.

    But I found no strong points supporting external tables.

    I had also gone through the following links

    http://asktom.Oracle.com/pls/asktom/f?p=100:11:0:P11_QUESTION_ID:6611962171229

    http://www.orafaq.com/Usenet/comp.databases.Oracle.misc/2007/02/13/0222.htm

    So please help me by providing some plus points and other links.

    Concerning
    Rambeau

    792353 wrote:
    Yes, it's really a good point, but can be achieved once the data has been pumped into staging tables.

    Who would take more space on the database, while the external tables you can do anything as the data is read. External tables would seem better in this regard.

    And now, we are not concerned with all the functions for use in DEC.

    People argue with me if we use external tables, we need create objects 2 db (1 external and more temporary table) which is just 1 intermediate table if sqlloader.

    You only need the external table definition. If you create a temporary table with this depends on your needs and the need to have such a table "staged." Even if you did in SQL * Loader you would always create a staging table, if there is really no difference...

    External table = 1 table definition and no data loaded in the database
    SQL * Loader = 1 table and the data loaded into the database

    Also read that when the feed file is huge its better to opt for sqlloader as it can circumvent sql analysis by choosing a DIRECT approach. Isisnt it?

    External tables using SQL * Loader under the hood engine, so there is no real difference except where you want to keep your data (in the file, or load a copy first on the database). You can use the parallel with external tables to load using multiple threads, you can use the indicator append to load the data as in the direct approach of sql * loader.

    So, kindly suggest me which is the best approach in a long-term process.

    In the long term, the external tables are the best approach. They were introduced after SQL * Loader to provide an improved mechanism. If they were not better, Oracle would not have taken the trouble with them. They also have the advantage that the control of their use is on the database, i.e. no need to control files, no need to run a command-line utility, not two floors (loading then treatment) treatment.

    There is no real reason for the use of SQL * Loader everything but more, the strange unique circumstance where you need to download data from a client computer (which will raise the question why a client machine has data on it in the first place!)

  • Difference between external tables and sql * loader

    Hello

    Could you please tell me the difference between
    tables external and sql * loader

    I have serached on the net but did ' get correct idea

    Please help me

    1 SQL LOADER can be run on the network (from any client computer), external tables can't

    2. return to the Oracle 9, external Tables could not load CLOB/BLOB (Oracle10 changed it)

    3 oracle 11 external tables have preprocessor, which is pretty dam characteristic cool - running essentially any OS command e.g. decompress before external table run. What's even better is the fact that the result of the operating system command is the source of the outer table, which means that there are no required temporary file (unzip the tracks and the output is the source of the external table). There are several ways to great use this - look at my blog for samples rare http://jiri.wordpress.com/2010/01/19/no-more-unix-scripts-in-11-2/

    4. as long as the 009 stressed, filed external load anything, they show just. Think of it more as load on request - it's great if you have old files archived and one or two users what to see content once a while

    5. external tables require no user access to the operating system, it is oracle environment pure - this may seem minor but for me it's huge. The fact that the ETL needs no special unix, no control file command and uses the simple SQL and DDL is nice and important

    6. external tables can load more text files, Oracle export dump files can be loaded, perhaps in the future more formats will be supported (hopefully all right excel format?)

    now the same thing to kill the myth - the TWO are EXACTLY the same when it comes to speed, I would actually drive of the external tables before will be faster because sql loader is old technology oracle doesn't really develops more

  • 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

  • External table Oracle via the Tables API

    Hello world

    I did experiment with the Oracle NoSQL database recently and I became a bit stuck with the new API of Tables. I have so far successfully of the external tables on the data entered using storage techniques 'vanilla' KV and avro (using generic and specific links) scheme, but create API Tables seems to be another matter entirely.

    My question arises in the trainer interface, which has a KeyValueVersion and a KVStore. I can't translate a KeyValueVersion created with the API of Tables in a primary key for recovery (since I don't know what the key generated by the API actually looks like to!) or map it on an avro scheme. The problem seems to be that the Tables API writes data in some format that can be easily translated into a string or an integer (releases from external table lines due to unknown characters if I am trying to retrieve all the values in the database to see what it looks like to), and try to map it to an AVRO map results in the error message 'the data are not as AVRO'.

    Scenario:

    I created a very simple table in the administration tool KV, which consists of a column personId (integer) that is PK, firstName, lastName, emailAddr (all channels) and enter 5 rows with success. What I want to do is to create an external table called person that returns just those 5 values (and brand new I add to the table of course). This means that I have to first understand what the parentKey value must be defined in the .dat file and how to take this key and it becomes a primary key for the recovery of the line.

    Faithful old Google could not find information on how to do this (he was only a thread similar to this with the answer "we'll add it soon"), so I hope that someone here managed to do!

    Thank you

    Richard

    Hi Richard

    I understand the issue you are facing. In the current version (12.1.3.0.9) the external tables feature only works with records of K/V not with the Table model, however, in the next version (which us will very soon be GA) we will support integration of external tables with the data of Table model as well. Please make sure that you have signed up for the announcement of release so that we can inform you of the release. I apologize for the inconvenience, he did to you.

    Best

    Anuj

    Sign up for announcements of NoSQL database , so we can warn you versions futures and other updates from the product of NoSQL database

  • Load the oracle database using the external table

    LKM:LKM file for oracle (external tables)
    Added command IKM:IKM sql
    Mapping: automatic mapping
    Error in step: insert new lines
    java.sql.SQLException: ORA-29913: error in executing ODCIEXTTABLEOPEN legend
    ORA-29400: data cartridge error
    opening the file in error... /Demo/file/test.txt_000.log

    Description:
    insert into TARGET_Schema.TARGET_Table
    (
    ColumnA,
    ColumnB,
    ColumnC
    )
    Select
    C1_ColumnA,
    C2_ColumnB,
    C3_ColumnC

    of ODI. C$ _0TARGET_Table
    where
    (1 = 1)
    answer please, how to solve this error.

    Hello

    GOTO topology and make sure that the database server has full path as D:\oracle\oracledi\oracledi\demo\file name

    and do not... file/demo /.

    After testing this issue, it should work fine.

    Thank you
    Fati

  • Facing many problems on the creation of directory and an external Table

    Question:

    The strange thing is that if you look at the question 10-b page 3-41, it says:
    (page 3-41 "Oracle Database 10g SQL Fund. II Vol.1")

    Merge the data into the EMP_DATA table that is created in the lab last in the data in the table emp_hist. assume
    EMP_DATA external table data corresponds to the EMP_HIST of table, update the email column
    table EMP_HIST to match the row in the EMP_DATA table. If a row in the EMP_DATA table is not
    match, to be inserted in the tables of EMP_HIST lines are considered as corresponding whenever his first and
    family name are the same.

    For me, this issue is built wrong. First of all in the last lab we have not been asked to create EMP_DATA. Secondly, EMP_DATA is empty.
    Thirdly, this question asks us to merge into the table EMP_HIST while EMP_DATA is empty.

    Table EMP_HIST currently copied data from the employees table. Structure EMP_HIST:

    FIRST NAME VARCHAR2 (20)
    LAST_NAME NOT NULL VARCHAR2 (25)
    EMAIL NOT NULL VARCHAR2 (45)

    Anway, I did the merger as follows:

    merge into e emp_hist
    with the help of emp_data d
    on (e.first_name = d.first_name)
    When matched then
    game update
    Select = d.last_name,
    e.email = d.email
    When not matched then
    Insert values (d.first_name, d.last_name, d.email);

    I get this error:

    Error report:
    SQL error: ORA-29913: error in executing ODCIEXTTABLEOPEN legend
    ORA-29400: data cartridge error
    KUP-04040: file emp.dat in EMP_DIR not found
    ORA-06512: at "SYS." ORACLE_LOADER', line 19
    29913 00000 - "error in the execution of %s legend".
    * Cause: The execution of the specified legend caused an error.
    * Action: Examine the error messages take appropriate measures.

    On the other hand, I said I'm going to try this:

    merge into emp_data d
    using e emp_hist
    on (d.first_name = e.first_name)
    When matched then
    game update
    d.last_name = select,
    d.email = e.email
    When not matched then
    Insert values (e.first_name, select, e.email);

    I get this error because the external table is final once its creation is as far as I know:

    Error report:
    SQL error: ORA-30657: operation not supported on external organized table
    30657.0000 - "operation not supported on external-organized table".
    * Cause: User attempted on the operation on an external table which is
    not supported.
    * Action: Don't do that!

    **********************************

    I don't know what to do. I did my best, please help.

    Published by: user11164565 on July 27, 2009 02:43

    user11164565 wrote:
    NOTE: I did my best, I've done everything I can do, but the problem persists. Help, please

    I'll mention all the steps that I made it clear...

    I gave scott the following grants:

    grant create any directory Scott;
    grant read on the directory emp_dir to scott;

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

    1. create a directory and its been created successfully:

    create or replace directory emp_dir
    like 'F:\emp_dir ';

    Then I made just to make sure that my directory is recognized the following:

    SELECT *.
    OF dba_directories;

    I found the drive among the results...

    OWNER NOM_REPERTOIRE
    ------------------------------ ------------------------------
    DIRECTORY_PATH
    --------------------------------------------------------------------------------
    SYS EMP_DIR
    F:\emp_dir

    SYS SUBDIR
    D:\oracle\product\10.2.0\db_1\demo\schema\order_entry\/2002/Sep

    SYS XMLDIR
    D:\oracle\product\10.2.0\db_1\demo\schema\order_entry\

    ----------------------
    2. I created an external table emp_data (the script is given by the text book): successfully done

    drop table emp_data;

    CREATE TABLE emp_data
    (first name VARCHAR2 (20))
    , last_name VARCHAR2 (20)
    , email VARCHAR2 (30)
    )
    EXTERNAL ORGANIZATION
    (
    TYPE oracle_loader
    Emp_dir default DIRECTORY
    ACCESS SETTINGS
    (
    RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII
    NOBADFILE
    NOLOGFILE
    FIELDS
    (first name POSITION (01:20) TANK)


    , last_name POSITION (22:41) TANK
    CHAR POSITION (43:72) by email)
    )
    LOCATION ('emp.dat'));

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

    3. I went to drive F:\ to see if emp_dir file exist or not! I did not see it. I checked the files hidden, nothing. Anyway, I ignored and did step 4.

    "Anyway, I ignored him... "

    and so the rest of your problems. I do not see in the steps you told that acually you created a directory ("folder") named "\emp_dir" on your f: drive. Anything that you create the database will actually create this directory on the operating system. Uttering a directory in Oracle, uttering an external table in Oracle, don't create pointers to Oracle objects will assume just actually exists.

  • 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.

  • Load the XML file into Oracle external Table


    I load the data from the XML file into an intermediate table Oracle using external Tables.

    Let's say below, it is my XML file

    < header >
    < A_CNT > 10 < / A_CNT >
    < E_CNT > 10 < / E_CNT >
    < AF_CNT > 10 < / AF_CNT >
    < / header >
    < student >
    <>students-details
    < Student_info >
    < Single_Info >
    < ID > 18 / < ID >
    New York < City > < / City >
    < country > United States < / country >
    < Name_lst >
    < Student_name >
    Samuel < name > < / name >
    Paul < Last_name > < / Last_name >
    < DOB > 19871208 < / DOB >
    Aware of < RecordStatus > < / RecordStatus >
    < / Student_name >
    < Student_name >
    Samuel < name > < / name >
    Paul < Last_name > < / Last_name >
    < DOB > 19871208 < / DOB >

    < TerminationDt > 20050812 < / TerminationDt >
    History of < RecordStatus > < / RecordStatus >
    < / Student_name >
    < / Name_lst >
    < Personal_Info >
    <>men < / Type >
    < 27 > < / Age >
    < / Personal_Info >
    < / Single_Info >
    < / Student_info >

    < student - register >
    class < A >
    < info >
    < detail >
    < ID student > 18 < / student >
    EE < major > < / Major >
    < course-Grades >
    < course > VLSI < / course >
    < degree > 3.0 < / Grade >
    < / course-Grades >
    < course-Grades >
    < course > nanotechnology < / course >
    < degree > 4.0 < / Grade >
    < / course-Grades >
    < / details >
    < detail >
    < ID student > 18 < / student >
    THIS < major > < / Major >
    < / details >
    < / info >
    class < A >
    < Student_Enrol >
    <>students-details
    < student >

    I load this XML data file into a single table using an external Table. Could someone help me please with coding.

    Thank you

    Reva

    Could you please help me how to insert my XML content into that.

    Same as before, try a plain old INSERT:

    insert into xml_pecos

    values)

    XmlType (bfilename ('XML_DIR', "test.xml"), nls_charset_id ('AL32UTF8'))

    );

    But you'll probably hit the same limitation as with the binary XMLType table.

    In this case, you can use FTP to load the file as a resource in the XML DB repository.

    If the XML schema has been registered with the hierarchy enabled then the file will be automatically inserted into the table.

    Could you post the exact statement that you used to save the scheme?

    In the meantime, you can also read this article, I did a few years ago, it covers the XML DB features that may be useful here, including details on how to load the file via FTP:

    https://odieweblog.WordPress.com/2011/11/23/Oracle-XML-DB-a-practical-example/

    And documentation of the course: http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/xdb06stt.htm#ADXDB4672

Maybe you are looking for