2017-02-27 1 views
0

Gibt es eine Möglichkeit, benutzerdefinierte Ansichten allein aufzulisten. Wenn ich in MSSQL versuchte, Tabellen und Ansichten mit der Funktion getTables() von DatabaseMetadata von jdbc aufzulisten, wurden alle Ansichten angezeigt. Aber ich brauche keine Systemansichten in meine Ergebnismenge.Benutzerdefinierte Ansichten aus Datenbank auflisten

DatabaseMetadata dmd = connection.getMetaData(); 
tablesResultSet= dmd.getTables(dbName, null, null, new String[] { "TABLE", "VIEW" }); 

Dies ist der Code, den ich verwende, um Metadaten zu extrahieren. Kann mir jemand helfen, das zu lösen?

Antwort

2

Sie die Datenbank direkt mit einem SELECT Anruf und analysieren, das Ergebnis vielleicht fragen:

SELECT * FROM sys.objects WHERE [type]='V' AND is_ms_shipped=0 

[type]='V' filtert für VIEW s und is_ms_shipped=0 filtert für Objekte, die von anderen Nutzern werden (wurden nicht installiert von MS)

Find details here

+0

wird es nur für MSSQL funktionieren? – abubakkar

+2

@abubakkar - 'SELECT TABLE_NAME AS VIEW_NAME VON [INFORMATION_SCHEMA]. [VIEWS]' könnte etwas portabler sein. –

0

Sie haben das Schema zu berücksichtigen. Das Standardschema für MS SQL ist dbo. So Ihren Anruf sollte auf die Metadaten sein:

DatabaseMetadata dmd = connection.getMetaData(); 
tablesResultSet= dmd.getTables(dbName, "dbo", null, new String[] { "VIEW" }); 

Oder Sie alle Schemen erhalten, bevor sie von

dmd.getSchemas(dbName,"%"); 

Und dann Schleife alle Ihre ‚Arbeit‘ Schemata.

+0

wird es für mysql und oracle funktionieren? – abubakkar

+0

Ja, außer dass das Standardschema einen anderen Namen hat. –

+0

In MySQL Schema ist nicht üblich, weil es in der Datenbank enthalten ist. Sie verwenden also nur den '%' als Schemanamen in MySQL. –

Verwandte Themen