Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2011, 11h04   #1
Invité de passage
 
thomas
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : thomas

Informations forums :
Inscription : février 2011
Messages : 12
Points : 2
Points : 2
Par défaut Difference de données entre deux tables

Bonjour,

Je vous fait part d'un problème qui est assez connu
J'ai cherché sur plein de forum mais je n'ai pas trouvé de réponses qui me convenaient

Mon objectif est de faire une "photo" d'une base oracle (10g) à un instant t, puis à un instant t+1 et de comparer un échantillon de table.
La première étape sera de sauvegarder l'image de l'instant t dans un autre shéma, et faire la même chose à l'instant t+1.
La deuxième étape concerne l'analyse des différences et c'est là que je bloque

Voici l'exemple:

Citation:
select * from test_table1 t;
IDN TEXTE
1 aaaa
2 bbbb
Citation:
select * from test_table2 t;
IDN TEXTE
1 aaaa
2 cccc

Code :
1
2
3
4
5
6
7
(SELECT * FROM test_table1 t
MINUS
SELECT * FROM test_table2 t)
UNION ALL
(SELECT * FROM test_table2 t
MINUS
SELECT * FROM test_table1 t);
Citation:
IDN TEXTE
2 bbbb
2 cccc
Je désire créer un rapport qui me remonte les différences,
j'ai imaginé exploiter le résultat précédent en ajoutant le nom de la table
Citation:
IDN TEXTE TABLE
2 bbbb test_table1
2 cccc test_table2
Mais je n'y arrive pas

L'idée, derrière, c'est de remonter les différences sur une IHM

Vos critiques sont les bienvenues, la solution que j'imagine est sans doute perfectible !


Merci à tous
gianffranco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 11h34   #2
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Citation:
Envoyé par gianffranco Voir le message
Bonjour,

Je vous fait part d'un problème qui est assez connu
J'ai cherché sur plein de forum mais je n'ai pas trouvé de réponses qui me convenaient

Mon objectif est de faire une "photo" d'une base oracle (10g) à un instant t, puis à un instant t+1 et de comparer un échantillon de table.
La première étape sera de sauvegarder l'image de l'instant t dans un autre shéma, et faire la même chose à l'instant t+1.
La deuxième étape concerne l'analyse des différences et c'est là que je bloque
Voici un exemple que vous pouvez adapter à votre guise

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
/* Formatted on 2011/06/10 11:31 (Formatter Plus v4.8.8) */
DROP TABLE a;
 
DROP TABLE b;
 
CREATE TABLE a (stid NUMBER, c1 NUMBER,  c2 NUMBER, c3 NUMBER);
INSERT INTO a
     VALUES (1, 20, 30, 40);
INSERT INTO a
     VALUES (2, 40, 50, 60);
INSERT INTO a
     VALUES (3, 90, 80, 100);
 
CREATE TABLE b AS SELECT *
FROM a WHERE 1 = 0;
 
INSERT INTO b
     VALUES (1, 10, 30, 40);
INSERT INTO b
     VALUES (2, 40, 40, 70);
INSERT INTO b
     VALUES (3, 90, 90, 100);
 
COMMIT ;
 
 
SELECT   stid, c1, c2, c3
    FROM (SELECT a.*, 1 src1, TO_NUMBER (NULL) src2
            FROM a
          UNION ALL
          SELECT b.*, TO_NUMBER (NULL) src1, 2 src2
            FROM b)
GROUP BY stid, c1, c2, c3
  HAVING COUNT (src1) != COUNT (src2)
ORDER BY stid;
Bien à vous
Mohamed Houri
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 15h28   #3
Invité de passage
 
thomas
Inscription : février 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : thomas

Informations forums :
Inscription : février 2011
Messages : 12
Points : 2
Points : 2
En reprenant le code, j'obtiens la même résultat qu'avec mon code
Finalement, j'ai opté pour une solution qui, je pense, est plus simple

Je requête mes tables, je stocke le résultat dans un fichier. Du coup j'ai plus qu'à analyser les différences sur un fichier!
gianffranco est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 10/06/2011, 15h59   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Citation:
Envoyé par gianffranco Voir le message
...
Je requête mes tables, je stocke le résultat dans un fichier. Du coup j'ai plus qu'à analyser les différences sur un fichier!
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web