|  |  | Archives of the TeradataForumMessage Posted: Mon, 17 Dec 2007 @ 16:56:47 GMT
 
 
  
| Subj: |  | Re: Verifying tables structures between two different databases |  |  |  | From: |  | Dieter Noeth |  
 Suresh Koppusetty wrote: 
          > Select databasename, tablename
          >     From dbc.TABLES
          >     Where databasename = 'db_a'
          >     Minus
          >     Select Databasename, tablename
          >     From dbc.TABLES
          >     Where databasename = 'db_b'
|  | uses "MINUS"" function, to get the difference of tables between 2 databases. |  | 
 
 
 |  | But is there anyway without using minus function, can we get the output. |  | 
 
 
 The easiest way is a Full Outer Join like this: 
     Select
        coalesce(a.databasename, b.databasename),
        coalesce(a.tablename, b.tablename),
        case
          when a.tablename is null then 'table missing in database a'
          when b.tablename is null then 'table missing in database b'
          else 'table match'
        end
     from
     (select * from dbc.TABLES
       Where databasename = 'db_a')  as a
     full outer join
     (select * from dbc.TABLES
       Where databasename = 'db_b')  as b
     on
        a.databasename = b.databasename
     and
        a.tablename = b.tablename
     where
         a.tablename is null
     or b.tablename is null
 This can be easily enhanced for missing columns, different datatypes, formats, defaults... e.g 
     case
        ....
        when a.ProtectionType <> b.ProtectionType then 'missmatch: protection
     types'
     end
     ...
     where
     ...
     or a.ProtectionType <> b.ProtectionType
 Dieter 
 
 |  |