Follow us: Connect on YouTube Connect on YouTube Connect on YouTube

Pages

Saturday, 2 April 2016

SQL External Tables


External tables allow Oracle to query data that is stored in flat files outside the database
ORACLE_LOADER driver is used to access any data stored in any format that can be loaded by SQL*Loader.
No DML can be performed on external tables but they can be used for query, join and sort operations.
Views and synonyms can be created against external tables.
Used in the ETL process of data warehouses since the data doesn't need to be staged and can be queried in parallel.
Should not be used for frequently queried tables

Create directory object to data location
Create directory EXT_TABLES as 'C:\Oracle\External_Tables';

Create the external table Example

CREATE TABLE emp_ext (
empno NUMBER(8),
first_name VARCHAR2(30),
last_name VARCHAR2(30))
ORGANIZATION EXTERNAL
( TYPE oracle_loader DEFAULT DIRECTORY ext_tables
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' ) LOCATION
('emp1.txt','emp2.txt') )
PARALLEL 5
REJECT LIMIT 200;

You can use external table feature to access external files as if they are tables inside the database.
When you create an external table, you define its structure and location with in oracle.
When you query the table, oracle reads the external table and returns the results just as if the data had been stored with in the database.

ACCESSING EXTERNAL TABLE DATA

To access external files from within oracle, you must first use the create directory command to define a directory object pointing to the external file location
Users who will access the external files must have the read and write privilege on the directory.

Ex:

CREATING DIRECTORY AND OS LEVEL FILE

    SQL> Sqlplus system/manager
    SQL> Create directory saketh_dir as ‘/Visdb/visdb/9.2.0/external’;
     SQL> Grant all on directory saketh_dir to saketh;
     SQL> Conn saketh/saketh
     SQL> Spool dept.lst
     SQL> Select deptno || ‘,’ || dname || ‘,’ || loc from dept;
     SQL> Spool off

CREATING EXTERNAL TABLE

 SQL> Create table dept_ext
         (deptno number(2),
         Dname varchar(14),
         Loc varchar(13))
         Organization external  ( type oracle_loader
                                                 Default directory saketh_dir
                                                 Access parameters
                                                 ( records delimited by newline
                                                    Fields terminated by “,”
                                                    ( deptno number(2),
                                                      Dname varchar(14),
                                                      Loc varchar(13)))
         Location (‘/Visdb/visdb/9.2.0/dept.lst’));

SELECTING DATA FROM EXTERNAL TABLE

SQL> select * from dept_ext;
This will read from dept.lst which is a operating system level file.

LIMITATIONS ON EXTERNAL TABLES

a)     You can not perform insert, update, and delete operations
a)     Indexing not possible
b)     Constraints not possible

BENEFITS OF EXTERNAL TABLES

a)   Queries of external tables complete very quickly even though a full table scan id required with each access

b)   You can join external tables to each other or to standard tables
Share this article :

0 comments:

Post a Comment