lundi 21 janvier 2013

Merge Oracle et Taod


Ou comment mettre a jour des données d’une base sur une autre base oracle (ou un autre schéma)… Cas qui arrive assez fréquemment sur les environnements de production, de test/recette, de développement et d’intégration.

Toad est un formidable outil pour tous ce qui touche la base de données. Il permet entre autre d’utiliser une panoplie de raccourcis très pratiques.

Voici la liste des possibilités fourni par Toad :
image
  • Access Database File
  • Delimited Test
  • Excel File / Excel Instance
  • Fixe Field Spacing
  • HTML Table
  • Insert Statements
  • Merge Statements
  • SQL Loader
  • XML (plain) / XML (with XSL)

Aujourd'hui le MERGE Statement :

Préambule : Je veux mettre a jour mes données d’une table de l’environnement de production sur l’environnement de Test (sans truncate, drop ou autre)

Requête sur l’environnement de PROD

select * from NATIONALITE where rownum < 2

Requête générée par notre ami Toad :

  • Génération du mot clé MERGE
  • Utilisation d’une requete ‘Seclect’ fictive
  • Comparaison d’égalité grace a la clé primaire (PK, primary key)
    • Si Ok alors réalisation d’un UPDATE
    • Si NOk alors réalisation d’un INSERT
MERGE INTO NATIONALITE A USING
 (SELECT
  'YUG' as "NATIONALITE_ID",
  'YOUGOSLAVE' as "NATIONALITE_LIBELLE"
  FROM DUAL) B
ON (A.NATIONALITE_ID = B.NATIONALITE_ID)
WHEN NOT MATCHED THEN 
INSERT (
  NATIONALITE_ID, NATIONALITE_LIBELLE)
VALUES (
  B.NATIONALITE_ID, B.NATIONALITE_LIBELLE)
WHEN MATCHED THEN
UPDATE SET 
  A.NATIONALITE_LIBELLE = B.NATIONALITE_LIBELLE;

COMMIT;

C’est tout simple avec Toad, cela facilite grandement la tache sur ce genre d’opération. (Pour le coup, un truncate, et Insert Statement aurait bien également bien fonctionner)

Aucun commentaire:

Enregistrer un commentaire