Comment charger un fichier dans plusieurs Tables Oracle 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.
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.
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;
|
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
|
INTO TABLE SCOTT."EMP"
TRUNCATE
...
INTO TABLE SCOTT."BONUS"
TRUNCATE
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> |
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> |
| 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 |