Académique Documents
Professionnel Documents
Culture Documents
TP SQL-Oracle
Cours BD , sémestre 2, Génie Informatique
Najib Tounsi
Exemple 1
num nom
1 Ali
2 Fatima
3 Untel
1 of 4 22/03/17 08:42
Chargement de données en SQL Oracle http://www.emi.ac.ma/~ntounsi/COURS/DB/Oracle/sqlldr...
(num, nom)
BEGINDATA
1|Ali
2|Fatima
3| Untel
C:\> sqlplus
SQL> select * from maTable
NUM NOM
------ ----------
1 Ali
2 Fatima
3 Untel
INFILE * pour que les données brutes soient lues dans le même fichier (après
BEGINDATA), sinon, un fichier sample.dat (nom par défaut) est cherché.
Une ligne source texte par tuple à insérer. Champs séparés par "|" spécifié par
TERMINATED
La clause FIELDS spécifie les colonnes à remplir en plus du caractère
séparateur des champs
La première ligne LOAD DATA est l'entête.
A noter aussi:
L'espace après un séparateur (3e ligne BEGINDATA) n'est pas ignorée. Le nom
inséré est " Untel" !
De même s'il y a un espace après un nom dans le fichier texte source!
Un fichier rapport sample.log est crée et éventuellement sample.bad pour les lignes
tuples erronées.
Exemple 2
On peut mettre les données dans un fichier séparé. On va rajouter des données
dans la table Oracle maTable. Soit le fichier texte maTable.dat contenant les lignes:
4|Amina
5| Aziz
2 of 4 22/03/17 08:42
Chargement de données en SQL Oracle http://www.emi.ac.ma/~ntounsi/COURS/DB/Oracle/sqlldr...
(num, nom)
Usage:
C:\> SQLLDR USERID=ali/passali, CONTROL=\ali\sample2.ctl
...
C:\> sqlplus
SQL > select * from test donnera
NUM NOM
------ ----------
1 Ali
2 Fatima
3 Untel
4 Amina
5 Aziz
A noter
Remarque
Syntaxe légère :
Le 1er argument est USERID, le 2e est CONTROL, extension par défaut .ctl
1) Charger des dates formatées. Supposer en plus un champ dateNais de type Date .
Il faut
...
FIELDS TERMINATED BY '|'
(num, nom, dateNais DATE 'dd-mm-yyyy')
BEGINDATA
1|Ali|01-01-1990
2|Fatima|4-1-1998
3 of 4 22/03/17 08:42
Chargement de données en SQL Oracle http://www.emi.ac.ma/~ntounsi/COURS/DB/Oracle/sqlldr...
...
Dans la clause FIELDS on donne le format 'dd-mm-yyyy' pour saisir les dates
comme on souhaite.
Supposer une table Oracle avec trois colonnes a, b, c entières. Les données :
3||5
|2|4
1||6
||7
dans la table.
On pourra aussi utiliser le format d'échange CSV, avec toujours une ligne par tuple
et les champs séparés par le caractère virgule.
FIELDS TERMINATED BY ','
NB. Bien sûr, la virgule ne doit pas faire partie des données, sinon choisir le point-
virgule qui est aussi un séparateur CSV.
D'autres spécifications existent selon les contraintes du fichier source des données.
Voir http://docs.oracle.com/cd/B19306_01/server.102/b14215
/ldr_control_file.htm#i1004642
Le cas inverse, copier les tables vers des fichiers externes peut-être effectué avec la
commande SQLPLUS spool...
(*) En fait, cet outil SQLLDR permet de migrer des données provenant de
plusieurs type de sources, y compris des fichiers représentant des tables d'autres
BDs.
4 of 4 22/03/17 08:42