أفضل طريقة لمقارنة محتويات طاولتين في تيرادام؟

StackOverflow https://stackoverflow.com/questions/2472147

  •  20-09-2019
  •  | 
  •  

سؤال

عندما تحتاج إلى مقارنة جدولين لمعرفة ما هي الاختلافات ، هل هناك أي أدوات أو اختصارات تستخدمها ، أو هل ترمز إلى SQL لمقارنة الجدولين؟

في الأساس ، تقارن الميزات الأساسية لمنتج مثل Red Gate SQL (مخططات لجداولي عادة ما تتطابق دائمًا مع).

الخلفية: في بيئة خادم SQL الخاصة بي ، قمت بإنشاء إجراء مخزن يتفقد البيانات الوصفية للجداول/المشاهدات ، ويقوم بإنشاء استعلام (مثل SQL الديناميكي) الذي ينضم إلى الجدولين على أعمدة المفاتيح المحددة ، ويقارن البيانات في أعمدة المقارنة ، الإبلاغ عن الاختلافات الرئيسية واختلافات البيانات. يمكن طباعة الاستعلام وتعديله/نسخه أو إبعاده تمامًا كما هو. لا يُسمح لنا بإنشاء إجراءات مخزنة في بيئة Teradata الخاصة بنا ، للأسف.

هل كانت مفيدة؟

المحلول

يبدو وكأنه أداة لتوصيف البيانات مثل توجيهة المفتوحة سيكون أكثر منطقية في تلك المرحلة.

يمكنك كتابة عبارة BTEQ التي تقوم بإنشاء الاستعلام المشابه لإجراء SQL Server المخزن ثم تصدير SQL المبني ديناميكيًا. يمكنك بعد ذلك تشغيل ذلك داخل BTEQ الخاص بك. قد تصبح مرهقة ، ولكن مع تصميم كافٍ ، ربما يمكنك أن تسخر من شيء ما.

نصائح أخرى

لا أعرف ما إذا كانت هذه هي الإجابة الصحيحة التي تبحث عنها.

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

يمكنك أن تفعل الشيء نفسه عن طريق تحديد أعمدة محددة. هذا سوف يعطي أساسا الصفوف غير الموجودة من الجدول 2 والتي هي في الجدول 1.

إذا لم تكن تبحث عن هذا النوع من الإجابة ، فيرجى تجاهل هذا ومتابعة.

كما يمكنك تحديد كما يلي.

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

كان هذا مجرد تحليل يمكن أن يعطي فكرة. يرجى تجاهل أي أخطاء نمطية وبرمجية. أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top