2009-05-10 24 views

Respuesta

15

La opción más cercana es consultar el INFORMATION_SCHEMA para las tablas.

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

El INFORMATION_SCHEMA es parte del estándar SQL, pero no todos los vendedores de apoyarlo. Por lo que yo sé, los únicos proveedores de RDBMS que lo apoyan son:

Algunas marcas de base de datos, por ejemplo, Oracle, IBM DB2, Firebird, Derby, etc. tienen vistas de "catálogo" similares que le brindan una interfaz donde puede consultar metadatos en el sistema. Pero los nombres de las vistas, las columnas que contienen y sus relaciones no coinciden con el estándar ANSI SQL para INFORMATION_SCHEMA. En otras palabras, hay información similar disponible, pero la consulta que usaría para obtener esa información es diferente.

(nota: las vistas de catálogo en IBM DB2 UDB para System i son diferentes de las vistas de catálogo en IBM DB2 UDB para Windows/* NIX - tanto por el universal en UDB)

Algunos otras marcas (por ejemplo, SQLite) no ofrecen ninguna interfaz consultable para metadatos en absoluto.

+0

Estaba a punto de responder y decir "No, absolutamente no". Tu respuesta me salvó. Aprendí algo nuevo hoy :) – wcm

+0

Agregué enlaces a los documentos para INFORMATION_SCHEMA en las respectivas marcas RDBMS que lo soportan. –

5

No. A todos les encanta hacerlo a su manera.

1

No, el estándar SQL no restringe dónde se enumeran los nombres de la tabla (si es que lo hace), por lo que tendrá que realizar diferentes declaraciones (típicamente SELECT en tablas especialmente nombradas) dependiendo del motor SQL que esté Tratando con.

+1

Como Bill Karwin señala correctamente, el INFORMATION_SCHEMA es parte del estándar SQL-92. Algunos proveedores pueden no admitirlo, pero es parte del estándar. –

1

Si estás bien con el uso de un enfoque no-SQL y tiene un controlador ODBC para la base de datos y que implementa el SQLTables de punto de entrada, que posiblemente puede obtener la información que desea!

PJJH

detalles sobre la API en: http://msdn.microsoft.com/en-us/library/ms711831.aspx

Cuestiones relacionadas