Referenzen zwischen Tabellen finden

Guten Tag in die Runde!

Hättet ihr eventuell Tipps wie man bei generisch benannten Tabellen (t_yyyyy (y= 0-9) davon etwa 92 Stück mit insgesamt einigen Millionen Datensätzen) am Besten Referenzen untereinander heraus findet?

Da die Tabellen aus einen XML File (4GB) stammen und per custom Script importiert wurden, gibt es leider auch kaum Index oder andere eindeutige IDs die als solches auch angelegt sind. Es gibt sonnst nur für manche Spalten eine XML-Datei die die Typen jeweils beschreibt. (STR/INT, Maximale Länge, Nullable etc) nach diesem Schema werden auch die Tabellen angelegt.

Außer die Tabellen Stück für Stück durchzugehen, die Tabellen in ein Visio-Datenblatt anzulegen und dann per Verbinder gleichnamige Spalten zu verbinden - so könnte man eventuell noch Tabellen finden die eine zentrale Rolle spielen - würde mir keine andere sinnvolle Lösung einfallen. Wäre aber sehr viel Aufwand bei 92 Tabellen.

Bin über jeglichen Tipp sehr erfreut!
Vielen Dank & Grüße Christian

1 „Gefällt mir“

Ein Ansatz wäre das Data Dictionary abzufragen. Also die Tabellen-Definitonen.
Hier ein Vorschlag, wie man ermittelt könnte, ob der Spaltenname + Typ + Nullable in verschiedenen Tabellen so vorkommt. Anzahl in der Spalte cnt_same_column.

select  c.table_name, c.column_name, data_type, is_nullable
        , count(*) over (partition by c.column_name, data_type, is_nullable) cnt_same_column
    from information_schema.columns c
    where c.table_schema = 'public'
         and regexp_match(c.table_name, 't_[0-9]{5}') is not null
    order by c.column_name, data_type, is_nullable
;
2 „Gefällt mir“

Vielen Dank, dass werde ich einmal versuchen scheint auf jeden Fall eine sehr interessante Lösung und kann wirklich viel dabei helfen die relevanten Spalten herauszufinden. :slight_smile: Hat schon gut weitergeholfen, danke!