[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2015
    Beiträge
    109
    Hallo,

    wenn ich das richtig verstanden hab suchst du Felder, die in den Dateien voneinander abweichen.
    So müsste das funktionieren:
    SELECT DBILIB, DBIFIL, DBIFLD
    FROM qadbilfi a
    join (select * from qadbilfi b where dbilib = 'Lib 2' and
    dbifil = 'dat 2'
    ) as b on a.DBIFLD = b.DBIFLD
    where a.dbilib ='lib 1' and a.dbifil = 'dat 1'
    and (a.dbiiln <> b.dbiiln or a.dbiitp <> b.dbiitp or
    a.dbityp <> b.dbityp or a.dbicln <> b.dbicln or
    a.dbiccc <> b.dbiccc or a.dbinln <> b.dbinln or
    a.dbinsc <> b.dbinsc)
    evtl. musst du etwas genauer definieren welche Unterschiede du brauchst.
    Hab hier jetzt Typ, CCSID und Längen genommen.

    Falls es dir auch um den Inhalt geht kannst du die Felder die hier herauskommen ja in Schleife dynamisch in ein Sql setzen lassen und so vergleichen.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.954
    Ich würde die Catalog View SYSCOLUMNS verwenden. (Auf die QADB... Tabellen, hat nicht jeder Zugriff!)

    Für den Abgleich, würde ich die Catalog-View mehrfach über FULL JOINS verknüpfen und dann die Abweichungen über Case-Anweisungen ermitteln (und ggf. filtern) etwa so:

    Code:
    Select Coalesce(a.Table_Schema, b.Table_Schema)  Schema,
           Coalesce(a.Table_Name,   b.Table_Name)    Table,
           Coalesce(a.Column_Name,  b.Column_Name)   Column,
           Case When a.Data_Type <> b.Data_Type Then 'DataType' Else '' End DiffType,
           Case When a.Length    <> b.Length    Then 'Length'   Else '' End DiffLength,
           Case When a.Numeric_Scale is Distinct from b.Numeric_Scale Then 'Numeric Scale' Else '' End DiffNumScale, 
           ....
      From (Select * 
               From SysColumns 
               Where     System_Table_Name   = 'YOUR1TABLE'
                     and System_Table_Schema = 'SCHEMA1') a
            Full Join 
            (Select *
               From SysColumns
               Where     System_Table_Name   = 'YOUR2TABLE'
                     and System_Table_Schema = 'SCHEMA2') b
             on     a.System_Column_Name  = b.System_Column_Name
    Falls die abweichenden Datensätze ermittelt werden sollten, kann dies mit Hilfe der EXCEPT-Klausel erfolgen:
    Code:
    Select Col1, Col2, ... ColN
       From SCHEMA1.YOUR1TABLE
    Except
    Select Col1, Col2, ... ColN
       From SCHEMA2.YOUR2TABLE
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 6. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.828
    Die QADB... ist Basis für SYSCOLUMNS und ohne Lesezugriff (Default) könnte man auch die SYSCOLUMNS nicht lesen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Record 367461 member PARTMASTER already locked to this job.
    By harkne in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 08-12-15, 15:31
  2. COMPARE PF
    By samik in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 12-02-03, 16:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •