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

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

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


не годится? или надо из приложения?
...
Рейтинг: 0 / 0
05.09.2003, 07:49
    #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
05.09.2003, 15:14
    #32257154
Павел С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
Господа, спасибо большое! И следом возник другой вопрос: как получить перечень таблиц в определённой базе данных?
Порылся в системных каталогах не нашёл такой возможности, приходиться опять к вам за помощью обращаться.
...
Рейтинг: 0 / 0
05.09.2003, 15:35
    #32257179
Vel
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
05.09.2003, 16:08
    #32257233
Павел С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
А что такое "t" объясните подробней, если не сложно можно по icq: 123740943.
...
Рейтинг: 0 / 0
05.09.2003, 16:19
    #32257254
Stellar.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
t - Alias
...
Рейтинг: 0 / 0
05.09.2003, 17:02
    #32257321
Павел С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
Господа, а Вы уверены что последний запрос составлен коректно и вобще он полный? Мой postgresql ругается говорит что ошибка в конце запроса.
...
Рейтинг: 0 / 0
08.09.2003, 09:59
    #32258009
Vel
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
10.09.2003, 18:50
    #32261634
wbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
select * from pg_tables
...
Рейтинг: 0 / 0
11.09.2003, 10:55
    #32262048
Павел С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
Господа и очередной вопрос: а можно каким-то образом столбцам дать русские удобочитаемые названия? Есть вот например возможность столбцам создавать коментарии, но как их потом получить я что-то не нашёл. :-((

И ещё ни кто не сталкивался с созданием процедур на PLPerl? Что-то похоже на то что в Postgres не работают шаблоны... То есть попытка выполнить "m/\d/", допустим ни чем не заканчивается...
...
Рейтинг: 0 / 0
11.09.2003, 12:18
    #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
11.09.2003, 13:17
    #32262325
Павел С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
Спасибо за содержательный ответ. Есть теперь над чем помыслить.
...
Рейтинг: 0 / 0
27.10.2003, 18:44
    #32306664
Павел С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить наименование столбцов определённой таблицы?
Господа, а подскажите опять убогому: можно ли вышеприведённый запрос как-то универсализировать? То есть чтобы он срабатывал как в том случае когда есть дескрипшин у аттрибута, так и в том когда его нет? Пока он вывод только те столбцы к которым существует дискрипшин.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить наименование столбцов определённой таблицы? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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