Запрос на извлечение списка таблиц и полей

Нашел в инете как получить список всех существующих таблиц в базе:

SELECT tablename FROM pg_tables;

А как получить список полей определенной таблицы?

И вообще, где можно почитать про эти служебные таблицы типа pg_tables и за что они отвечают?

Спасибо!

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

http://postgresql.ru.net/node

http://postgresql.ru.net/node/214027 - очень важная тема!
http://postgresql.ru.net/manual/catalogs.html - а эта так для разнообразия.

и как пример

 SELECT  t.table_name, c.column_name, c.data_type
   FROM information_schema.TABLES t JOIN information_schema.COLUMNS c ON t.table_name::text = c.table_name::text
  WHERE t.table_schema::text = 'public'::text AND 
        t.table_catalog::name = current_database() AND 
        t.table_type::text = 'BASE TABLE'::text AND 
        NOT "substring"(t.table_name::text, 1, 1) = '_'::text
  ORDER BY t.table_name, c.ordinal_position;

ок, спасибо! То что надо

ок, спасибо! То что надо

Теперь не получается загнать

Теперь не получается загнать эти поля таблицы в массив. Упростил функцию до SELECT  c.column_name FROM  information_schema.COLUMNS c
Выполняется как надо, но когда пытаюсь загнать эти поля в текстовый массив таким образом:

SELECT ARRAY(SELECT c.column_name 
                                    FROM information_schema.COLUMNS c)
                                    INTO %array%;

То выдается ошибка:


ERROR: could not find array type for datatype information_schema.sql_identifier
CONTEXT: SQL statement "SELECT ARRAY(SELECT c.column_name FROM information_schema.COLUMNS c)"

Должно быть как-то так FOR v

Должно быть как-то так

FOR v IN SELECT c.column_name FROM information_schema.COLUMNS c loop
 vArr_[i]=v;
 i=i+1
end loop;

можно и так, у меня

можно и так, у меня получилось проще:

SELECT ARRAY(SELECT c.column_name::text FROM information_schema.COLUMNS c) INTO %array%;

За вариант спасибо =)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023