Wir haben eine große Oracle-Datenbank mit vielen Tabellen. Gibt es eine Möglichkeit, nachzufragen oder zu suchen, ob Tabellen mit bestimmten Spaltennamen vorhanden sind?
IE zeigt mir alle Tabellen, die die Spalten haben: id, fname, lname, address
Detail, das ich vergessen habe hinzuzufügen: Ich muss in der Lage sein, verschiedene Schemata zu durchsuchen. Diejenige, die ich zum Verbinden verwenden muss, besitzt nicht die Tabellen, die ich durchsuchen muss.
column_name
+ hinzu,like
wenn Sie sich über den genauen Namen nicht sicher sind:select owner, table_name, column_name from all_tab_columns where column_name like 'someField%';
Die gewünschten Daten befinden sich in der Metadatentabelle "cols":
Diese gibt Ihnen eine Liste von Tabellen, die alle gewünschten Spalten enthalten:
Um dies in einem anderen Schema zu tun, geben Sie einfach das Schema vor der Tabelle an, wie in
Wenn Sie die Suche vieler Schemas zu einem Ausgabeergebnis kombinieren möchten, können Sie Folgendes tun:
quelle
SELECT * FROM COLS
gibt nichts von meinem Schema zurück. Ich habe nur ausgewählte Berechtigungen für die Tabellen. Würde die Auswahl nicht ausreichen, um sie über COLS anzeigen zu können?select * from schema1.cols
gibt mir einentable or view does not exist
Fehler. Hätte das damit zu tun, wie die Berechtigungen eingerichtet werden?Um einen Spaltennamen zu suchen, verwenden Sie die folgende Abfrage, wenn Sie den Spaltennamen genau kennen:
So suchen Sie einen Spaltennamen, wenn Sie die genaue Spaltenverwendung unten nicht kennen:
quelle
Hier ist eine, die wir in findcol.sql gespeichert haben, damit wir sie problemlos in SQLPlus ausführen können
quelle