Monday 3 October 2011

SQL Loader Oracle

SQL LOADER - Importer CSV dans… - Oracle 10G - 11G   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 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 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 'test-ora.bad'
          DISCARDFILE 'test-ora.dsc'
    TRUNCATE

       INTO TABLE 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 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

  • 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 EMP
    TRUNCATE
    ...
    INTO TABLE 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 test-ora.ctl est dans le dossier D:\SQLLOADER

 
C:\SQLLOADER>SQLLDR scott/tiger@orcl CONTROL=D:\test-ora.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Vendredi. Septembre 30 19:36:17 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 Vendredi. Septembre 30 19:42:17 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
    
SQL> SELECT * FROM BONUS;

ENAME      JOB               SAL       COMM
---------- ---------- ---------- ----------
SMITH      CLERK           800,5
ALLEN      SALESMAN         1600        300
WARD       SALESMAN         1250     500,56

SQL>

 

Vérification du fichier LOG

 
C:\SQLLOADER>TYPE test-ora.log

SQL*Loader: Release 10.2.0.1.0 - Production on Vendredi. Septembre 30 19:45:17 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Fichier de contrôle :   test-ora.ctl
Fichier de données :    test-ora.ctl
  Fichier BAD :     test-ora.bad
  Fichier DISCARD : test-ora.dsc

 (Allouer tous les rebuts)
Nombre à charger : ALL
Nombre à sauter: 0
Erreurs permises: 50
Continuation :    aucune spécification
Chemin utilisé:   Direct
Table EMP, chargé à partir de chaque enregistrement physique.
Option d'insertion en vigueur pour cette table : TRUNCATE
....
...
..
Table BONUS, chargé à partir de chaque enregistrement physique.
Option d'insertion en vigueur pour cette table : TRUNCATE
.....
...
..
Table 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>

Saturday 1 October 2011

Installation Appex 4.1

Installation Apex 4.1 sous window 7

Installation Apex 4.1 sous window 7


1- Técharger Apex 4.1  sur ce lien:  Apex 4.1 

2- Démpresser le dossier dans un dossier (exemple :D:\LOGICIEL\apex_4.1\apex)

3- Sous Dos: D:\LOGICIEL\apex_4.1\apex
   3-1-  Placer vous sous le repertoire ou vous avez mis le  dossier  apex 
   3-2-  Connectez sous sqlplus comme SYS. Éxécutez apepxins  pour commencer l'installation
  D:\> sqlplus  sys as sydba 
             password: ********

 sql> @appexins  sysaux sysaux temp /i/      //création du reférentiel 
pour le dévloppement de nos application
 
L'installation va commencer 
vous allez voir le diffellement de creation de table utilisateur, beaucoup d'objet oracle
ca prend 20 à 25 min

vous devez avoir a la fin les lignes suivantes en cas de bonne installation , et la
déconexion automatique  de la base de données

...6 types
...0 type bodies
...0 operators
...0 index types
...Begin key object existence check 17:30:34
...Completed key object existence check 17:30:34
...Setting DBMS Registry 17:30:34
...Setting DBMS Registry Complete 17:30:34
...Exiting validate 17:30:34
timing for: Validate Installation
Elapsed: 00:04:54.06
timing for: Development Installation
Elapsed: 00:18:14.34
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Pr
oduction
With the Partitioning, OLAP and Data Mining options

Discounected from Oracle Database 10g Entreprise Edition 


D:\LOGICIEL\apex_4.1\apex>

ʸecution de apxldimg.sql

 4- Reconecter sur sqlplus en tant que administrateur, on va éxécuter  le script(apxldmg.sql)
  

D:\LOGICIEL\apex_4.1\apex>sqlplus sys as sysdba

SQL*Plus: Release 10.1.0.4.2 - Production on Sat Oct 1 17:41:58 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> @apxldimg D:\LOGICIEL\apex_4.1

PL/SQL procedure successfully completed.

old   1: create directory APEX_IMAGES as '&1/apex/images'
new   1: create directory APEX_IMAGES as 'D:\LOGICIEL\apex_4.1/apex/images'
Directory created.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Commit complete.
timing for: Load Images
Elapsed: 00:01:23.81
Directory dropped.

SQL>
-5- Execution du script de configuration(apxconf.sql) pour terminer  notre installation
    definir un mot de passe pour l''administrateur user
    changer le port par défaut, si ce dérnier et pris  par un autre programme


SQL> @apxconf

      PORT
----------
      8080
Enter values below for the XDB HTTP listener port and the password for the Appli
cation Express ADMIN user.
Default values are in brackets [ ].
Press Enter to accept the default value.
Enter a password for the ADMIN user              []
Enter a port for the XDB HTTP listener [      8080] 8090
...changing HTTP Port
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Session altered.
...changing password for ADMIN
PL/SQL procedure successfully completed.
Commit complete.
SQL>


6-Ouvrez votre Browser 
http://localhost:port/apex/apex_admin
localhost: 8080/apex/apex_admin
changer le mot de passe administrateur
Reconnecter vous avez l''interface APEX.
Commencer à Travailler