2010-03-18 6 views
0

Lorsque vous avez besoin de comparer deux tables pour voir les différences, y a-t-il des outils ou des raccourcis que vous utilisez, ou est-ce que vous utilisez le code SQL pour comparer les deux tables?La meilleure façon de comparer le contenu de deux tables dans Teradata?

Fondamentalement, les fonctionnalités de base d'un produit comme Red Gate SQL Data Compare (schémas pour mes tables correspondent généralement toujours). Contexte: Dans mon environnement SQL Server, j'ai créé une procédure stockée qui inspecte les métadonnées des deux tables/vues, crée une requête (en tant que SQL dynamique) qui joint les deux tables sur les colonnes clés spécifiées et compare les données dans les colonnes de comparaison, signalant les différences clés et les différences de données. La requête peut être imprimée et modifiée/copiée ou simplement exécutée telle quelle. Malheureusement, nous ne sommes pas autorisés à créer des procédures stockées dans notre environnement Teradata.

Répondre

1

Cela ressemble à un outil de profilage de données tel que Talend's Open Profiler serait le plus logique à ce stade.

Vous pouvez écrire une instruction BTEQ qui génère la requête de manière similaire à votre procédure stockée SQL Server, puis exporter le SQL créé dynamiquement. Vous pouvez alors exécuter cela à l'intérieur de votre BTEQ. Cela pourrait devenir encombrant, mais avec suffisamment de détermination, vous pourriez probablement vous moquer de quelque chose.

1

Je ne sais pas si c'est la bonne réponse que vous recherchez.

sel * from database_name1.table_name1 
minus 
sel * from database_name2.table_name2; 

vous pouvez faire la même chose en sélectionnant des colonnes spécifiques. Cela donnera essentiellement les lignes inexistantes de table2 qui sont dans la table1.

Si vous n'étiez pas à la recherche de ce type de réponse, ignorez ceci et continuez.

Vous pouvez également choisir comme ci-dessous.

select 
table1.keycol1, 
table2.keycol2, 
(table1.factcol1 - table2.factcol2) as diff 
from table1 
inner join 
table2 
on table1.keycol1 = table2.keycol1 
and table1.keycol2 = table2.keycol2 
where diff <> 0 

Ceci était juste une analyse qui peut donner une idée. Veuillez ignorer toutes les erreurs syntaxiques et programmatiques. J'espère que cela aide.

+0

Merci - c'est un code similaire à celui généré par notre outil sur SQL Server. –

Questions connexes