powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить наименование столбцов определённой таблицы?
15 сообщений из 15, страница 1 из 1
Как получить наименование столбцов определённой таблицы?
    #32256195
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, подскажите, возможно ли получить каким-то образом наименования всех столбцов какой либо таблицы? Версия postgresql 7.3.3.
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32256334
Фотография Allvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно не скажу запрос, нету под рукой постгреса.
Что-то типа
Код: plaintext
1.
 select * from pg_catalog. "pg_atribute"  where ..... 

Вообщем в этой таблице хранятся все поля всех таблиц ....
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32256478
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а типа

Код: plaintext
1.
2.
psql test
test=# \d имятаблицы


не годится? или надо из приложения?
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32256534
Konrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
SELECT pg_attribute.attname 
FROM pg_attribute, pg_class
WHERE pg_class.relname='имя_таблицы'
AND pg_class.relfilenode=pg_attribute.attrelid
AND pg_attribute.attnum> 0 ;
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32257154
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, спасибо большое! И следом возник другой вопрос: как получить перечень таблиц в определённой базе данных?
Порылся в системных каталогах не нашёл такой возможности, приходиться опять к вам за помощью обращаться.
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32257179
Vel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT t.oid, t.typname AS name, t.typtype, t.typbyval, t.typalign, t.typdelim, t.typstorage, t.typlen, t.typdefault, t.typinput, t.typoutput, t.typelem, u.usename, ds.description, et.typname AS elemtype, t.typrelid, t.typnotnull, t.typndims, bt.typname AS basetype, n.nspname, btn.nspname AS btnsname, infn.nspname AS infnsp, oufn.nspname AS outfnsp, t.typtypmod, etn.nspname AS etnsp, ctr.relkind FROM pg_type t LEFT OUTER JOIN pg_user u ON t.typowner = u.usesysid LEFT OUTER JOIN pg_description ds ON ds.objoid = t.oid LEFT OUTER JOIN pg_type et ON t.typelem = et.oid INNER JOIN pg_namespace n ON t.typnamespace = n.oid LEFT OUTER JOIN pg_type bt ON t.typbasetype = bt.oid LEFT OUTER JOIN pg_namespace btn ON bt.typnamespace = btn.oid LEFT OUTER JOIN pg_proc inf ON t.typinput = inf.oid LEFT OUTER JOIN pg_namespace infn ON inf.pronamespace = infn.oid LEFT OUTER JOIN pg_proc ouf ON t.typoutput = ouf.oid LEFT OUTER JOIN pg_namespace oufn ON ouf.pronamespace = oufn.oid LEFT OUTER JOIN pg_namespace et
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32257233
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что такое "t" объясните подробней, если не сложно можно по icq: 123740943.
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32257254
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
t - Alias
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32257321
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, а Вы уверены что последний запрос составлен коректно и вобще он полный? Мой postgresql ругается говорит что ошибка в конце запроса.
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32258009
Vel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, не полный. Вот полный запрос:
SELECT t.oid, t.typname AS name, t.typtype, t.typbyval, t.typalign, t.typdelim, t.typstorage, t.typlen, t.typdefault, t.typinput, t.typoutput, t.typelem, u.usename, ds.description, et.typname AS elemtype, t.typrelid, t.typnotnull, t.typndims, bt.typname AS basetype, n.nspname, btn.nspname AS btnsname, infn.nspname AS infnsp, oufn.nspname AS outfnsp, t.typtypmod, etn.nspname AS etnsp, ctr.relkind FROM pg_type t LEFT OUTER JOIN pg_user u ON t.typowner = u.usesysid LEFT OUTER JOIN pg_description ds ON ds.objoid = t.oid LEFT OUTER JOIN pg_type et ON t.typelem = et.oid INNER JOIN pg_namespace n ON t.typnamespace = n.oid LEFT OUTER JOIN pg_type bt ON t.typbasetype = bt.oid LEFT OUTER JOIN pg_namespace btn ON bt.typnamespace = btn.oid LEFT OUTER JOIN pg_proc inf ON t.typinput = inf.oid LEFT OUTER JOIN pg_namespace infn ON inf.pronamespace = infn.oid LEFT OUTER JOIN pg_proc ouf ON t.typoutput = ouf.oid LEFT OUTER JOIN pg_namespace oufn ON ouf.pronamespace = oufn.oid LEFT OUTER JOIN pg_namespace etn ON et.typnamespace = etn.oid LEFT OUTER JOIN pg_class ctr ON t.typrelid = ctr.oid WHERE t.typisdefined = 't'ORDER BY lower(t.typname)
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32261634
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from pg_tables
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32262048
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа и очередной вопрос: а можно каким-то образом столбцам дать русские удобочитаемые названия? Есть вот например возможность столбцам создавать коментарии, но как их потом получить я что-то не нашёл. :-((

И ещё ни кто не сталкивался с созданием процедур на PLPerl? Что-то похоже на то что в Postgres не работают шаблоны... То есть попытка выполнить "m/\d/", допустим ни чем не заканчивается...
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32262213
Konrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столбцам давать русские имена крайне нежелательно. Нет гарантии, что вся котовасия из "продукты", "ид_продукта", "имя_продукта" и т.п. не слетит к бениной маме впоследствии, да и все нюансы с кодировкой не просчитаешь. Возможно, грабли будут с последующими обновлениями СУБД. Так что не стОит.

Описания вытаскиваются различными способами.
Например, через функцию obj_description(), где аргументами служат oid'ы объектов (таблиц, полей, последовательностей и т.п.).
Или, например, поля (и не только) можно вытащить из системной таблицы pg_description, примерно таким запросом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
	    SELECT 
    		a.attnum,
    		a.attname AS field, 
		t.typname AS type, 
		a.atttypmod- 4  AS lengthvar,
		a.attnotnull AS notnull,
		a.atthasdef as hasdefault,
		d.description as descr
    	    FROM 
		pg_class c, 
		pg_attribute a, 
		pg_type t,
		pg_description d
	    WHERE 
		c.relname = 'имя таблицы'
		and a.attnum >  0 
		and a.attrelid = c.oid
    		and a.atttypid = t.oid
		and a.attname <> 'id'
		and d.objoid = c.oid
		and d.objsubid = a.attnum
	    ORDER BY a.attnum;


В общем, решения есть. Но в их число именование объектов БД на русском языке не входит, ИМХО.
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32262325
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за содержательный ответ. Есть теперь над чем помыслить.
...
Рейтинг: 0 / 0
Как получить наименование столбцов определённой таблицы?
    #32306664
Павел С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, а подскажите опять убогому: можно ли вышеприведённый запрос как-то универсализировать? То есть чтобы он срабатывал как в том случае когда есть дескрипшин у аттрибута, так и в том когда его нет? Пока он вывод только те столбцы к которым существует дискрипшин.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить наименование столбцов определённой таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]