Overblog Suivre ce blog
Administration Créer mon blog
14 août 2011 7 14 /08 /août /2011 15:54

 

Importer un CSV dans Tables Multiple avec SQL Loader.

Comment charger un fichier dans plusieurs Tables Oracle avec SQL Loader. ?

Chargement Multiple de données délimitées avec SQL Loader.

Nous allons voir ici avec sqlldr comment, à partir d'un fichier de données unique, on importe dans plusieurs tables Oracle avec plusieurs clause INTO TABLE.

1 - Chargement SQLLDR dans 2 Tables.

Dans l'exemple de chargement ci-dessous, nous n'utiliserons pas d'Input Data File, nous allons mettre les données à charger directement dans le Fichier de contrôle après la Clause BEGINDATA pour une meilleure visibilité de l'exemple.

 

Structure des 2 tables cibles.

 
 CREATE TABLE SCOTT.EMP ( EMPNO NUMBER(4) NULL, ENAME VARCHAR2(10 BYTE) NULL, JOB VARCHAR2(9 BYTE) NULL, MGR NUMBER(4) NULL, HIREDATE DATE NULL, SAL NUMBER(7,2) NULL, COMM NUMBER(7,2) NULL, DEPTNO NUMBER(2) NULL ) TABLESPACE USERS; 
 
 CREATE TABLE SCOTT.BONUS ( ENAME VARCHAR2(10 BYTE) NULL, JOB VARCHAR2(10 BYTE) NULL, SAL NUMBER NULL, COMM NUMBER NULL ) TABLESPACE USERS; 

 

Structure du Control File SQLLDR ( INTO MULTIPLE TABLE ).

 
 OPTIONS (DIRECT=TRUE) LOAD DATA INFILE * BADFILE 'dba-ora.bad' DISCARDFILE 'dba-ora.dsc' TRUNCATE INTO TABLE SCOTT."EMP" FIELDS terminated by ";" Optionally enclosed by '"' ( empno INTEGER EXTERNAL, ename CHAR "UPPER(:ename)", job CHAR "RTRIM(:job)", mgr INTEGER EXTERNAL NULLIF (mgr="NULL"), hiredate DATE "MM/DD/YYYY HH24:MI:SS", sal DECIMAL EXTERNAL, comm DECIMAL EXTERNAL NULLIF (comm="NULL"), deptno INTEGER EXTERNAL OPTIONALLY ENCLOSED BY "'" ) INTO TABLE SCOTT."BONUS" FIELDS terminated by ";" Optionally enclosed by '"' ( empno FILLER POSITION(1), ename CHAR "UPPER(:ename)", job CHAR "RTRIM(:job)", mgr FILLER , hiredate FILLER , sal DECIMAL EXTERNAL, comm DECIMAL EXTERNAL NULLIF (comm="NULL"), deptno FILLER ) BEGINDATA 7369;smith;CLERK ;7902;;800,50;;30 7499;"Allen";"SALESMAN ";NULL;"02/20/1981 00:00:00";1600;300;'30' 7521;"WARD";"SALESMAN";7698;"02/22/1981 00:00:00";1250;500,56;30 7566;"JONES";"MANAGER ";7839;"04/02/1981 00:00:00";2975;NULL;'30' 7654;"MARTIN";"SALESMAN";7698;"09/28/1981 00:00:00";1250;1400;30 
  • Nous avons deux clauses INTO TABLE.
  • L'option TRUNCATE est placée en haut par défaut. L'option s'applique pour les deux tables. On peut définir deux options differentes, dans ce cas on place l'option TRUNCATE juste après la clause INTO TABLE.
  •  INTO TABLE SCOTT."EMP" TRUNCATE ... INTO TABLE SCOTT."BONUS" TRUNCATE 
  • Dans la deuxièmes clauses INTO TABLE, nous désactivons les champs qui ne correspondent pas à notre structure de la table Bonus avec le type FILLER.
  • Vous remarquerez le mot clé POSITION avec la valeur 1 sur la première colonne. Ceci est obligatoire, pour réinitialiser le pointeur dans SQLLOADER. Ici la valeur est 1 car nous voulons qu'il commence la lecture à partir du début de la ligne. Si vous omettez ce mot clé, la deuxième table ne sera pas mise à jour.

 

Chargement avec la commande SQLLDR.

ici le fichier de contrôle dba-ora.ctl est dans le dossier C:\SQLLOADER

 
 C:\SQLLOADER>SQLLDR scott/tiger CONTROL=dba-ora.ctl SQL*Loader: Release 10.2.0.1.0 - Production on Dim. Août 14 16:49:32 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Chargement terminé - calcul enregistrement(s) logique(s) 5. C:\SQLLOADER> 
 
 C:\SQLLOADER>SQLPLUS scott/tiger SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Août 14 16:50:10 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connecté à : Oracle Database 10g Release 10.2.0.1.0 - Production SQL> SET LINESIZE 130 SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ---------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 800,5 30 7499 ALLEN SALESMAN 20/02/1981 1600 300 30 7521 WARD SALESMAN 7698 22/02/1981 1250 500,56 30 7566 JONES MANAGER 7839 02/04/1981 2975 30 7654 MARTIN SALESMAN 7698 28/09/1981 1250 1400 30 SQL> SELECT * FROM bonus; ENAME JOB SAL COMM ---------- ---------- ---------- ---------- SMITH CLERK 800,5 ALLEN SALESMAN 1600 300 WARD SALESMAN 1250 500,56 JONES MANAGER 2975 MARTIN SALESMAN 1250 1400 SQL> 

 

Vérification du fichier LOG

 
 C:\SQLLOADER>TYPE dba-ora.log SQL*Loader: Release 10.2.0.1.0 - Production on Dim. Ao¹t 14 16:55:10 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Fichier de contrôle : dba-ora.ctl Fichier de données : dba-ora.ctl Fichier BAD : dba-ora.bad Fichier DISCARD : dba-ora.dsc (Allouer tous les rebuts) Nombre à charger : ALL Nombre à sauter: 0 Erreurs permises: 50 Continuation : aucune spécification Chemin utilisé: Direct Table SCOTT."EMP", chargé à partir de chaque enregistrement physique. Option d'insertion en vigueur pour cette table : TRUNCATE .... ... .. Table SCOTT."BONUS", chargé à partir de chaque enregistrement physique. Option d'insertion en vigueur pour cette table : TRUNCATE ..... ... .. Table SCOTT."EMP" : Chargement réussi de 5 Lignes. 0 Lignes chargement impossible dû à des erreurs de données. 0 Lignes chargement impossible car échec de toutes les clauses WHEN. 0 Lignes chargement impossible car tous les champs étaient non renseignés. Table SCOTT."BONUS" : Chargement réussi de 5 Lignes. 0 Lignes chargement impossible dû à des erreurs de données. 0 Lignes chargement impossible car échec de toutes les clauses WHEN. 0 Lignes chargement impossible car tous les champs étaient non renseignés. Nombre total d'enregistrements logiques ignorés : 0 Nombre total d'enregistrements logiques lus : 5 Nombre total d'enregistrements logiques rejetés : 0 Nombre total d'enregistrements logiques mis au rebut : 0 C:\SQLLOADER> 

Haut de Page www.dba-ora.fr

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Description SQL Loader
• Oracle SQL LOADER / SQLLDR Load Data
• Importer CSV dans Oracle avec SQL loader
Repost 0
Published by Daniel Roesch - dans SQL LOADER
commenter cet article
14 août 2011 7 14 /08 /août /2011 00:49

 

Importer un fichier CSV avec SQL Loader.

Comment charger un CSV dans Oracle avec SQL Loader. ?

Chargement de données délimitées avec SQL Loader.

Les Données délimitées sont séparés par des chaînes de caractères appelée délimiteurs.
Certains champs, notamment les champs de texte, peuvent être ENCLOSED par des " ".
Des champs peuvent contenir des espaces en début et à la fin.

1 - Chargement avec la Clause BEGINDATA (sans Input Data File).

On peut mettre les données à charger directement dans le Fichier de contrôle après la Clause BEGINDATA.

 

Structure table cible.

 
 CREATE TABLE SCOTT.EMP ( EMPNO NUMBER(4) NULL, ENAME VARCHAR2(10 BYTE) NULL, JOB VARCHAR2(9 BYTE) NULL, MGR NUMBER(4) NULL, HIREDATE DATE NULL, SAL NUMBER(7,2) NULL, COMM NUMBER(7,2) NULL, DEPTNO NUMBER(2) NULL ) TABLESPACE USERS; 

 

Structure Control File SQLLDR

 
 OPTIONS (DIRECT=TRUE) LOAD DATA INFILE * BADFILE 'dba-ora.bad' DISCARDFILE 'dba-ora.dsc' TRUNCATE INTO TABLE SCOTT."EMP" WHEN (deptno = '30') FIELDS terminated by ";" Optionally enclosed by '"' ( empno INTEGER EXTERNAL, ename CHAR "UPPER(:ename)", job CHAR "RTRIM(:job)", mgr INTEGER EXTERNAL NULLIF (mgr="NULL"), hiredate DATE "MM/DD/YYYY HH24:MI:SS", sal DECIMAL EXTERNAL, comm DECIMAL EXTERNAL NULLIF (comm="NULL"), deptno INTEGER EXTERNAL OPTIONALLY ENCLOSED BY "'" ) BEGINDATA 7369;smith;CLERK ;7902;;800,50;;30 7499;"Allen";"SALESMAN ";NULL;"02/20/1981 00:00:00";1600;300;'30' 7521;"WARD";"SALESMAN";7698;"02/22/1981 00:00:00";1250;500,56;30 7566;"JONES";"MANAGER ";7839;"04/02/1981 00:00:00";2975;NULL;'30' 7654;"MARTIN";"SALESMAN";7698;"09/28/1981 00:00:00";1250;1400;30 
  • OPTIONS (DIRECT=TRUE)
  • Direct path = TRUE insère les données dans de nouveau Extents. Les blocs de données sont directement écrit dans les fichiers de données de la base sans passer par le Buffer Cache. Il y a des restrictions quand à l'utilisation de cette Option dans certains cas.

  • LOAD DATA INFILE *
  • On met un astérisque à la clause INFILE car le fichier à charger est inclus dans le fichier de contrôle lui même. Sinon nous aurions par exemple INFILE 'c:\sqlloader\dba-ora.dat'

  • BADFILE 'dba-ora.bad'
  • Si des erreurs de chargements se produisent un fichier BADFILE dba-ora.bad est créé.

  • DISCARDFILE 'dba-ora.dsc'
  • Si vous avez spécifié une clause WHEN et si des enregistrements ne satisfont pas cette clause alors un fichier DISCARDFILE dba-ora.dsc est créé.

  • FIELDS terminated by ";" Optionally enclosed by '"'
  • Nous mettons cette clause FIELDS par défaut pour tous les champs du fichier à charger. Nous pouvons ajuster au cas par cas ensuite dans la déclaration du champ. Par défaut les champs ont des séparateurs (;) Point Virgule et sont quelquefois entre (").

  • CHAR "UPPER(:ename)"
  • Utilisation de la fonction UPPER pour convertir la colonne ename en Majuscule.

  • CHAR "RTRIM(:job)"
  • Utilisation de la fonction RTRIM pour supprimer les espaces de droite sur la colonne job.

  • INTEGER EXTERNAL NULLIF (mgr="NULL")
  • Utilisation de la fonction NULLIF qui permet de remplacer la chaîne texte "NULL" par une valeur NULL.

  • INTEGER EXTERNAL OPTIONALLY ENCLOSED BY "'"
  • Pour la dernière colonne deptno nous lui indiquons que cette dernière peut être ENCLOSED par des '.

  • BEGINDATA
  • Marque le début de la zone de données à charger dans la base de données.

 

Déclenchement du chargement en ligne de commande avec SQLLDR.

ici le fichier de contrôle dba-ora.ctl est dans le dossier C:\SQLLOADER

 
 C:\SQLLOADER>SQLLDR scott/tiger CONTROL=dba-ora.ctl SQL*Loader: Release 10.2.0.1.0 - Production on Dim. Août 14 03:46:10 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Chargement terminé - calcul enregistrement(s) logique(s) 5. C:\SQLLOADER> 
 
 C:\SQLLOADER>SQLPLUS scott/tiger SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Août 14 03:56:32 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connecté à : Oracle Database 10g Release 10.2.0.1.0 - Production SQL> SET LINESIZE 140 SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ---------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 800,5 30 7499 ALLEN SALESMAN 20/02/1981 1600 300 30 7521 WARD SALESMAN 7698 22/02/1981 1250 500,56 30 7566 JONES MANAGER 7839 02/04/1981 2975 30 7654 MARTIN SALESMAN 7698 28/09/1981 1250 1400 30 SQL> 

 

Vérification du fichier LOG

 
 C:\SQLLOADER>TYPE dba-ora.log SQL*Loader: Release 10.2.0.1.0 - Production on Dim. Ao¹t 14 03:46:10 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Fichier de contrôle : dba-ora.ctl Fichier de données : dba-ora.ctl Fichier BAD : dba-ora.bad Fichier DISCARD : dba-ora.dsc (Allouer tous les rebuts) Nombre à charger : ALL Nombre à sauter: 0 Erreurs permises: 50 Continuation : aucune spécification Chemin utilisé: Direct Table SCOTT."EMP", chargé quand DEPTNO = 0X3330(caractère '30') Option d'insertion en vigueur pour cette table : TRUNCATE ............ ........ .... Table SCOTT."EMP" : Chargement réussi de 5 Lignes. Nombre total d'enregistrements logiques lus : 5 Nombre total d'enregistrements logiques rejetés : 0 Nombre total d'enregistrements logiques mis au rebut : 0 C:\SQLLOADER> 

Haut de Page www.dba-ora.fr

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Description SQL Loader
• Oracle SQL LOADER / SQLLDR Load Data
Repost 0
Published by Daniel Roesch - dans SQL LOADER
commenter cet article
9 août 2011 2 09 /08 /août /2011 14:11

 

SQL Loader et le Control File SQLLDR.

C'est quoi le control file SQL Loader. ?
A quoi sert le control file SQL Loader. ?

Description Control File SQL Loader.

Ce fichier décrit la structure des données à charger dans Oracle.
Le fichier de contrôle indique si le format est délimité, retour chariot, si une colonne est de taille fixe ou délimitée par un caractère.
Il précise les types de données, des longueurs, précision, jeu de caractères, structure d'enregistrement.
Le fichier de contrôle de l'outil SQLLDR est simplement un fichier interface (Protocol) qui permet de dire, je charge Quoi, Comment, Où, et sous quelle condition.

Attention, pour SQL LOADER lorsque l'on parle de CONTROL FILE, il ne s'agit en aucun cas des CONTROL FILES de la base de données Oracle.

 

On peut décomposer le CONTROL FILE en quatres grandes parties:

  • La clause OPTIONS.
    Les options peuvent être en ligne de commande via SQLLDR ou dans le Fichier de Contrôle.
  • La clause LOAD DATA..
    La clause LOAD DATA marque le début de chargement.
  • La clause INTO TABLE.
    Identifie une ou plusieurs tables de chargement.
  • La Partie BEGINDATA.
    Les DATA à charger peuvent être dans un fichier Data ou dans le Fichier de Contrôle.

 

SQL Loader LOAD DATA INFILE.

 

SYNTAXE GÉNÉRIQUE LOAD DATA.

 
 {LOAD | CONTINUE_LOAD} [DATA] [CHARACTERSET character_set] [INFILE clause [INFILE clause...]] [INSERT | APPEND | REPLACE | TRUNCATE] INTO TABLE clause [INTO TABLE clause...] [WHEN conditions] [FIELDS [delimiter clause]] [TRAILING [NULLCOLS] [SKIP skip_count] (field list) [BEGINDATA] 

 

Exemple Control file SQLLDR.

 
 -- Exemple Control File www.dba-ora.fr OPTIONS (DIRECT=FALSE) LOAD DATA INFILE * BADFILE 'dba-ora.bad' DISCARDFILE 'dba-ora.dsc' TRUNCATE PRESERVE BLANKS INTO TABLE SCOTT."EMP" WHEN (deptno = '20') FIELDS terminated by ";" Optionally enclosed by '"' TRAILING NULLCOLS ( empno INTEGER EXTERNAL NULLIF (empno="NULL"), ename CHAR "UPPER(:ename)", job CHAR "RTRIM(:job)", mgr INTEGER EXTERNAL NULLIF (mgr="NULL"), hiredate DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (hiredate="NULL"), sal DECIMAL EXTERNAL NULLIF (sal="NULL"), comm DECIMAL EXTERNAL NULLIF (comm="NULL"), deptno INTEGER EXTERNAL NULLIF (deptno="NULL") ) BEGINDATA 7369;"smith";"CLERK ";7902;"12/17/1980 00:00:00";800,50;;20 7499;"Allen";"SALESMAN";NULL;"02/20/1981 00:00:00";1600;300;30 7521;"WARD";"SALESMAN";7698;"02/22/1981 00:00:00";1250;500,56;30 7566;"JONES";"MANAGER ";7839;"04/02/1981 00:00:00";2975;NULL;20 7654;"MARTIN";"SALESMAN";7698;"09/28/1981 00:00:00";1250;1400;30 

 

SQLLDR OPTIONS dans Control File.

La commande OPTIONS doit être spécifiée avant la commande LOAD DATA.

 

OPTIONS (param1=value [,param2=value])

  • BINDSIZE = n
  • COLUMNARRAYROWS = n
  • DIRECT = {TRUE | FALSE}
  • ERRORS = n
  • LOAD = n
  • MULTITHREADING = {TRUE | FALSE}
  • PARALLEL = {TRUE | FALSE}
  • READSIZE = n
  • RESUMABLE = {TRUE | FALSE}
  • RESUMABLE_NAME = 'text string'
  • RESUMABLE_TIMEOUT = n
  • ROWS = n
  • SILENT = {HEADER | FEEDBACK | ERRORS | DISCARDS | PARTITIONS | ALL}
  • SKIP = n
  • SKIP_INDEX_MAINTENANCE = {TRUE | FALSE}
  • SKIP_UNUSABLE_INDEXES = {TRUE | FALSE}
  • STREAMSIZE = n

 

SQLLDR LOAD DATA INFILE.

La clause LOAD DATA est généralement la première commande du Fichier de contrôle, elle indique le début d'un chargement de données.
La clause INFILE spécifie le nom du fichier contenant les données à charger. Nous mettons INFILE * lorsque les données à charger dans la base sont directement dans le fichier de contrôle après la clause BEGINDATA.

 

INFILE {filename | *}
[ BADFILE bad_file_name ]
[ DISCARDFILE discard_file_name]
[{ DISCARDS | DISCARDMAX } integer]

  • INFILE *
  • Clause INFILE lorsque les données à charger sont dans le Fichier Contrôle.
  • INFILE dba-ora.dat
  • Indique le nom du fichier data à charger dans la base de données.
  • INFILE 'c:\sqlloader\dba-ora.dat'
  • Indique le chemin complet du fichier data à charger. Mettre le Path entre ' '


  • BADFILE dba-ora.bad
  • Si des erreurs de chargements se produisent un fichier BADFILE dba-ora.bad est créé.
  • DISCARDFILE dba-ora.dsc
  • Si vous avez spécifié une clause WHEN et si des enregistrements ne satisfont pas cette clause alors un fichier DISCARDFILE dba-ora.dsc est créé.

 

SQLLDR INTO TABLE CLAUSE.

La clause INTO TABLE permet de spécifier la méthode de chargement (INSERT, APPEND, REPLACE, ou TRUNCATE).
C'est ici que l'on spécifie la table de destination.
La méthode par défaut de chargement dans SQL LOADER est INSERT.

 

{ INSERT | REPLACE | TRUNCATE | APPEND } INTO TABLE table_name

  • INSERT
  • La méthode INSERT est la méthode par défaut de SQL Loader. La table doit être vide.
  • REPLACE
  • La méthode REPLACE supprime (DELETE) toutes les lignes de la table avant de charger le fichier Data.
  • TRUNCATE
  • La méthode TRUNCATE est la plus rapide (en comparaison à REPLACE) toutes les lignes de la table sont supprimées. Pensez à désactiver les contraintes d'intégrité référentielle sinon SQL Loader renvoie des erreurs.
  • APPEND
  • La méthode APPEND ajoute les nouvelles lignes à la table. Si les données existent ou n'existent pas, les nouvelles lignes sont chargées .

 

SQLLDR FIELDS DATATYPE.

  • CHAR
  • Informe SQL Loader que le champ du fichier DATA est un champ texte.
  •  
     CHAR [(length)] [ENCLOSED [BY] [{'strg' | X'hex_val'}][AND {'strg' | X'hex_val'}] | TERMINATED [BY] {WHITESPACE|X'hex_val' | 'strg'} [[OPTIONALLY] ENCLOSED [BY] [{'strg' | X'hex_val'}][AND {'strg' | X'hex_val'}]]] 

     

  • INTEGER, DECIMAL, FLOAT, ZONED EXTERNAL
  • Informe SQL Loader que le champ du fichier DATA est un type numérique.
  •  
     {INTEGER | DECIMAL | FLOAT | ZONED} EXTERNAL[(length[,scale])] [ENCLOSED [BY] [{'strg' | X'hex_val'}][AND {'strg' | X'hex_val'}] | TERMINATED [BY] {WHITESPACE|X'hex_val' | 'strg'} [[OPTIONALLY] ENCLOSED [BY] [{'strg' | X'hex_val'}][AND {'strg' | X'hex_val'}]]] 
     123.45 -- ZONED(5,2) 123.45 -- DECIMAL(5,2) 12345 -- ZONED(5) 12345 -- DECIMAL(5) -123.45 -- ZONED(5,2) -123.45 -- DECIMAL(5,2) 

     

  • DATE
  • Informe SQL Loader que le champ du fichier DATA est un type caractère qui représente une Date.
  •  
     DATE [EXTERNAL] [(length)] ["format"] [ENCLOSED [BY] [{'strg' | X'hex_val'}][AND {'strg' | X'hex_val'}] | TERMINATED [BY] {WHITESPACE|X'hex_val' | 'strg'} [[OPTIONALLY] ENCLOSED [BY] [{'strg' | X'hex_val'}][AND {'strg' | X'hex_val'}]]] 
     08/26/2011 -- DATE "mm/dd/yyyy" 08/26/11 -- DATE "mm/dd/yy" "Jan 26, 2011", -- DATE "mon dd, yyyy" TERMINATED BY "," ENCLOSED BY '"' 

     

  • VARCHARC
  • Informe SQL Loader que le champ est une chaîne de caractères précédée par une série de chiffres représentant la longueur de la chaîne..
  •  
     VARCHARC(length_bytes) 
     005Paris -- VARCHARC(3) 010Versailles -- VARCHARC(3) 03Pau -- VARCHARC(2) 

     

 

SQLLDR BEGINDATA.

  • BEGINDATA
  • Informe SQL Loader de la fin de la commande LOAD lorsque les données à charger sont dans le fichier de contrôle. Les données à charger commencent immédiatement après la clause BEGINDATA.
    Si les données à charger sont dans un autre fichier, la commande BEGINDATA ne doit pas apparaître dans le fichier de contrôle.

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Description SQL Loader
Repost 0
Published by Daniel Roesch - dans SQL LOADER
commenter cet article
5 août 2011 5 05 /08 /août /2011 19:05

 

SQL Loader Présentation de l'outil SQLLDR.

C'est quoi SQL Loader. ?
A quoi sert SQL Loader. ?
Comment ça marche SQL Loader. ?

Description SQL Loader.

SQL Loader est un puissant utilitaire Oracle pour charger de grandes quantités de données dans une base de données Oracle.
SQL Loader lit les données à partir de fichiers textes et les insère dans une ou plusieurs tables.
SQL Loader est un binaire fournit par Oracle et qui s’exécute en ligne de commande.
Le nom binaire de l'outil est SQLLDR.EXE

sql loader architecture

SQL Loader CONTROL FILE.

  • Le fichier CONTROL FILE fournit un ensemble d'informations à SQL Loader:
  • Le nom et l'emplacement de l'Input Data File.
  • Les noms et emplacement du Fichier Bad File.
  • Les noms et emplacement du Fichier Discard File.
  • Le format des données de l'Input Data File.
  • Les noms de tables à charger ( Loader ).
  • La correspondance entre champs Input et colonnes de la table de base de données.
  • Les critères de sélection qui définis les enregistrements à insérer dans les tables de base de données.

SQL Loader LOG FILE.

  • Le fichier LOG FILE enregistre les activités SQL Loader durant un Loading:
  • Les noms des fichiers CONTROL FILE, BAD FILE, DISCARD FILE, Input Data File.
  • Les valeurs de paramètres.
  • Les champs et types de données qui ont été chargés.
  • Messages d'erreurs sur les enregistrement en Fail.
  • Le nombre d'enregistrements lu dans le fichier de données.
  • Le nombre d'enregistrements rejetée en raison d'erreurs.
  • Le nombre d'enregistrements rejetées en raison de critères de sélection.
  • Le temps de charge.

SQL Loader BAD FILE.

  • Dès que SQL Loader rencontre une erreur en essayant de charger un enregistrement, il écrit dans un fichier BAD FILE et enregistre les erreurs SQL Loader:
  • Violations de contraintes d'intégrité.
  • Tablespace Full,...

SQL Loader DISCARD FILE.

Les enregistrements qui ne répondent pas aux critères spécifiés dans le Control File sont jeter, écarter et sont écrits dans le fichier DISCARD FILE:

Cet article vous a présenté succinctement le fonctionnement SQL Loader, très prochainement de nombreux articles plus techniques seront publiés. Inscrivez vous à la newsletter pour en être averti.

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Oracle SQL LOADER / SQLLDR Load Data
• SQL INSERT INTO TABLE ORACLE
• CREATE TABLE ORACLE
Repost 0
Published by Daniel Roesch - dans SQL LOADER
commenter cet article