2009-05-10 15 views

risposta

15

L'opzione più vicina è richiedere il INFORMATION_SCHEMA per le tabelle.

SELECT * 
FROM INFORMATION_SCHEMA.Tables 
WHERE table_schema = 'mydatabase'; 

La INFORMATION_SCHEMA fa parte di SQL standard, ma non tutti i produttori lo supportano. Per quanto ne so, gli unici fornitori RDBMS che lo supportano sono:

Alcune marche di base di dati, per esempio Oracle, IBM DB2, Firebird, Derby, ecc. Hanno viste "catalogo" simili che forniscono un'interfaccia in cui è possibile interrogare i metadati sul sistema. Ma i nomi delle viste, le colonne che contengono e le loro relazioni non corrispondono allo standard ANSI SQL per INFORMATION_SCHEMA. In altre parole, sono disponibili informazioni simili, ma la query che utilizzeresti per ottenere tali informazioni è diversa.

(nota: il viste del catalogo in IBM DB2 UDB per System i sono diverse da quelle viste del catalogo in IBM DB2 UDB per Windows/* NIX - tanto per il universale a UDB)

Alcuni altri marchi (ad es. SQLite) non offrono alcuna interfaccia queriesble per i metadati.

+0

Stavo per rispondere e dire "No, assolutamente no". La tua risposta mi ha salvato. Ho imparato qualcosa di nuovo oggi :) – wcm

+0

Ho aggiunto collegamenti ai documenti per INFORMATION_SCHEMA nei rispettivi marchi RDBMS che lo supportano. –

5

No. Tutti amano farlo a modo loro.

1

No, lo standard SQL non vincola dove vengono elencati i nomi delle tabelle (se non del tutto), quindi dovrai eseguire istruzioni diverse (in genere le istruzioni SELECT su tabelle con nome specifico) in base al motore SQL che stai trattare con.

+1

Come Bill Karwin rileva correttamente, l'INFORMATION_SCHEMA è parte dello standard SQL-92. Alcuni fornitori potrebbero non supportarlo, ma fa parte dello standard. –

1

Se siete OK con l'utilizzo di un approccio non-SQL e si dispone di un driver ODBC per il database e implementa l'SQLTables entry-point, si possibilmente potrebbe ottenere le informazioni desiderate!

pjjH

dettagli sul API a: http://msdn.microsoft.com/en-us/library/ms711831.aspx

Problemi correlati