2009-05-10 4 views

ответ

15

Ближайшая опция - запросить INFORMATION_SCHEMA для таблиц.

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

INFORMATION_SCHEMA является частью стандарта SQL, но не все поставщики поддерживают его. Насколько я знаю, единственные производители СУБД, которые поддерживают его являются:

Некоторые бренды базы данных, например, Oracle, IBM DB2, Firebird, Derby и т. Д. Имеют похожие представления «каталога», которые предоставляют вам интерфейс, в котором вы можете запрашивать метаданные в системе. Но имена представлений, содержащихся в них столбцов и их отношения не соответствуют стандарту ANSI SQL для INFORMATION_SCHEMA. Другими словами, подобная информация доступна, но запрос, который вы использовали бы для получения этой информации, отличается.

(сноска: мнения каталога в IBM DB2 UDB для System I отличается от представления каталога в IBM DB2 UDB для Windows/* NIX - так много для Юниверсала в UDB)

Некоторые другие бренды (например, SQLite) вообще не предлагают какого-либо надежного интерфейса для метаданных.

+0

Я собирался ответить и сказать «Нет, абсолютно нет». Ваш ответ спас меня. Сегодня я узнал что-то новое :) – wcm

+0

Я добавил ссылки на документы для INFORMATION_SCHEMA в соответствующие бренды RDBMS, которые его поддерживают. –

5

Нет. Они все любят делать это по-своему.

1

Нет, стандарт SQL не ограничивает имена имен таблиц (если вообще), поэтому вам придется выполнять разные операторы (обычно SELECT операторов на специально названных таблицах) в зависимости от механизма SQL, который вы используете имеющий дело с.

+1

Как Билл Karwin правильно указывает, INFORMATION_SCHEMA является частью стандарта SQL-92. Некоторые поставщики могут не поддерживать его, но он является частью стандарта. –

1

Если все в порядке с использованием не-SQL подхода и у вас есть драйвер ODBC для базы данных и он реализует SQLTables точку входа, вы возможно могли бы получить информацию, которую вы хотите!

pjjH

детали по API по адресу: http://msdn.microsoft.com/en-us/library/ms711831.aspx

Смежные вопросы