Creazione di una tabella esterna.
Ora che i dati esterni sono disponibili e accessibili, è possibile creare la struttura di una tabella in grado di accedervi. Per crearla si dovrà utilizzare la clausola organization external del comando create table, nel quale è possibile specificare la struttura dei dati come si farebbe per un control file di SQL*Loader.
Il listato successivo mostra la creazione della tabella BIBLIOTECA_EXT, che si basa sui dati contenuti nel file di spool bookshelf.lst creato nel paragrafo precedente:
set feedback on heading on newpage 1 pagesize 60
create table BIBLIOTECA_EXT
(Titolo varchar2(100),
Editore varchar2(20),
NomeCategoria varchar2(20),
Classificazione varchar2(2))
organization external
(type ORACLE_LOADER
Default directory LIBRO_DIR
Access parameters (record delimited by newline fields terminated by “;”
(Titolo char(100),
Editore char(20),
NomeCategoria char(20),
Classificazione char(2)
)
)
Location (‘bookshelf_dump.lst’)
);
Oracle risponderà:
Table create.
Analogamente sarà possibile creare anche l’altra tabella basata sul file di spool book_auth_dump.lst:
create table BIBLIOTECA_AUTORE_EXT
(Titolo varchar2(100),
NomeAutore varchar2(50))
organization external
(type ORACLE_LOADER
Default directory LIBRO_DIR
Access parameters (record delimited by newline fields terminated by “;”
(Titolo char(100),
NomeAutore char(50),
)
)
Location (‘book_auth_dump.lst’)
)
NOTA: Quando si crea una tabella esterna Oracle eseguirà solamente delle convalide commarie. La maggior parte degli errori non sarà visibile fino a quando non si cercherà di interrogare la tabella. La sintassi per i parametri di accesso è molto specifica e degli errori anche non gravi nella definizione dell’accesso, compreso l’ordine delle clausole, potrebbe impedire l’accesso a tutte le righe.
E’ possibile verificare il contenuto delle tabelle esterne eseguendo una query partendo dalle medesime e confrontandole con le tabelle di origine. La query in questione è una normale select:
select Titolo from BIBLIOTECA_EXT
where NomeCategoria = ‘…..’;
Le tabelle esterne possono essere utilizzate alla stessa stregua di una tabella normale nelle interrogazioni (comandi di select), quindi anche in join.
Sulle tabelle esterne è possibile costruire view, ed eseguire funzioni sulle colonne della tabella. Vengono censite sul dizionario di dati di sistema denominato:
USER_EXTERNAL_TABLES.
Per visualizzare il nome del file esterno (o dei file) cui fa riferimento la tabella è necessario interrogare la tabella di sistema denominata:
USER_EXTERNAL_LOCATION.