[Oracle] Comparaison de données dans != table

Comparaison de données dans != table [Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 23-04-2003 à 09:30:02    

Voila mon problème, j'ai deux base: une de prod et une de test. Dans chacune de ces bases il y a des tables dictionnaire et j'aurai besoin de comparé une table avec la même dans l'autre base pour savoir si il y a des différence. Je peux pas le faire a la main car il y a une bonne 60ène de talbe avec dans certainne plus de 500 enregistrement.
Il y a-t-il un soft qui me permette de faire ca: DBA Studio, Toast, SQL+(lol)...??
 
 
 :jap:  
 


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
Reply

Marsh Posté le 23-04-2003 à 09:30:02   

Reply

Marsh Posté le 23-04-2003 à 10:23:36    

Si tu crées une table vide temporaire dans ta base de prod avec la meme structure evidemment.
 
Ensuite pour remplir la table il y a une commande sql (specifique a oracle ? sais po) qui permet d'importer le contenu d'une autre table ayant la meme structure.
 
la syntaxe :
 

Code :
  1. COPY FROM [utilisateur/mot_de_passe@base_de_données] TO [utilisateur/mot_de_passe@base_de_données] { APPEND ou CREATE ou INSERT ou REPLACE } table


 
append : ajoute des donnees ds la table destination, si elle n existe pas elle est cree (bien pour toi)
create : nécessite que la table soit deja cree sinon erreur
insert : comme append mais plante si la table n existe pas
replace : ecrase toutes les donnees de ta table destination
 
table : table de destination
 

Code :
  1. donc pour toi ce serait :


 

Code :
  1. COPY FROM toi/ton_mdp@base1 TO toi/ton_mdp@base2 APPEND ta_nouvelle_table


 
voila
 
edit : j'oubliais, mais apres tu dois savoir faire... Une requete qui renvoie la difference entre les 2 tables
 

Code :
  1. SELECT table1.champ_a_regarder, table2.champ_a_regarder FROM table1, table2 WHERE ton_test_de_difference_sur_les_champs_voulus


 
Apres t'as plus qu'à constater


Message édité par Masure le 23-04-2003 à 10:27:40
Reply

Marsh Posté le 23-04-2003 à 10:42:05    

:jap:


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
Reply

Marsh Posté le 23-04-2003 à 10:46:03    

Tu me diras si ca marche :)

Reply

Marsh Posté le 23-04-2003 à 11:06:07    

okidoki  [:tracker]


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
Reply

Marsh Posté le 23-04-2003 à 11:57:19    

Euh, juste comme ça, si l'autre base de données est accessible depuis l'autre base (TNSNAME correctement configuré) tu peux faire des requêtes directement sur les deux bases de données dans une même requête :
 
Mettons dans ton TNSNAMES.ORA l'entrée suivante :
 

GENERIX_PROD.WORLD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = bramble)(PORT = 5000))
    (CONNECT_DATA = (SID = gnxdbt01))
  )


 
Tu peux dans une requête faire :
 

select t1.*
from table_locale t1
where t1.id not in (select t2.iod from table_distante@gnxdbt01.gemse t2)


 
Par exemple.
 
Ou alors :

select t1.*
from table_locale t1, table_distante@gnxdbt01.gemse t2
where t1.id = t2.id
and t1.date_upd <> t2.date_upd


 
 
Voilà :)

Reply

Marsh Posté le 23-04-2003 à 12:02:08    

oki c'est noté
 
bon taff  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed