mardi 3 novembre 2009

Tables externes

Les tables externes constituent une alternative à l'outil sqlloader pour le chargement des fichiers dans une base.

Avant de créer une table externe, on crée un directory où se trouve le fichier à charger:
create or replace directory dir_tracker as 'G:\prototype\donnees';

On peut alors définir la table externe:
create table fic_tracker (
code_isin varchar2(20),
nom_tracker varchar2(120),
date_jb varchar2(10),
cours_ouv number,
cours_plus_haut number,
cours_plus_bas number,
cours_clo number,
volume number
)
organization external (
type oracle_loader
default directory dir_tracker
access parameters (
fields terminated by X'09'
missing field values are null
)
location ( 'TRACKER.txt' )
)
reject limit unlimited;

Puis, on peut charger le fichier dans une table via une simple requête:
insert into tracker
(code_isin, nom_tracker, date_jb, cours_ouv, cours_plus_bas, cours_plus_haut, cours_clo, volume )
select code_isin, nom_tracker, to_date(date_jb, 'DD/MM/YYYY'), cours_ouv, cours_plus_bas,cours_plus_haut, cours_clo, volume
from fic_tracker;

Les fichiers de log, similaires à ceux de sqlloader, se trouvent par défaut dans le directory.

Si nécessaire, le chargement du fichier peut être optimisé en utilisant le hint APPEND ou en augmentant le degré de parallélisation de la table externe et de la table classique.

Pour aller plus loin: http://www.orafaq.com/node/848

Aucun commentaire:

Enregistrer un commentaire