Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / получить структуру полей таблицы / 10 сообщений из 10, страница 1 из 1
19.05.2003, 10:45
    #32162735
lider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
Как в постгре получить структуру полей таблицы типа show columns from table из mysql?

/lider
...
Рейтинг: 0 / 0
19.05.2003, 15:01
    #32163106
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
Такой команды в самом диалекте PGSQL нет, но
вопервых если ты используешь терминал psql -
у тебя есть комманда "\d"
Если это нужно сделать из программы можно попробовать так :
set client_encoding=KOI8; -- это для моих табличек с русскими именами *)
SELECT a.attname,pg_catalog.format_type(a.atttypid, a.atttypmod),
a.attnotnull, a.atthasdef, a.attnum
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = (
SELECT c.oid FROM pg_catalog.pg_class c --Этот подзапрос возвращает --идентификатор таблицы...
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relname ~ '^жилая аренда$'
)
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Вот и все - подставь имя своей таблицы и если нужно выкини "лишние"
поля из основного SELECT-a - насколько я понял
тебе нужен список имя поля||тип поля.
Ах да ! Все это бессовестно сперто при помощи ключа psql -E
Комманда psql -E template1 будет выдавать все запросы которые генерирует psql. Это быстрее чем ползать по исходникам
...
Рейтинг: 0 / 0
20.05.2003, 10:44
    #32163706
lider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
Спасибо, все получилось.
Только как-то это все через ж..., IMHO.
/lider
...
Рейтинг: 0 / 0
20.05.2003, 11:35
    #32163787
Niemi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
А по-моему несложно, когда в клиенте работаешь:
Код: plaintext
\d tablename

и никаких забот.
...
Рейтинг: 0 / 0
20.05.2003, 14:30
    #32164061
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
2lider
Ты знаешь я припоминаю тоже удивился ,когда сравнивал MySQL и PG
правда потом когда в программе потребовалось сходу да одним
sql-выражОвыванием выдать список колонок я мигом понял что простота - здорово а гибкость еще круче 8)
Кстати я уверен что наверняка кто-то из буржуинов давно уж пытался
закоммить оператор show columns выдающий соотв просмотр
да сказали ему девелоперы "Паашел ты в ... контриб" -
мож он там и сидит - я не искал ибо счастлив и так 8)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.10.2010, 15:41
    #36923120
Zver87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
ShweikТакой команды в самом диалекте PGSQL нет, но
вопервых если ты используешь терминал psql -
у тебя есть комманда "\d"
Если это нужно сделать из программы можно попробовать так :
set client_encoding=KOI8; -- это для моих табличек с русскими именами *)
SELECT a.attname,pg_catalog.format_type(a.atttypid, a.atttypmod),
a.attnotnull, a.atthasdef, a.attnum
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = (
SELECT c.oid FROM pg_catalog.pg_class c --Этот подзапрос возвращает --идентификатор таблицы...
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relname ~ '^жилая аренда$'
)
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Вот и все - подставь имя своей таблицы и если нужно выкини "лишние"
поля из основного SELECT-a - насколько я понял
тебе нужен список имя поля||тип поля.
Ах да ! Все это бессовестно сперто при помощи ключа psql -E
Комманда psql -E template1 будет выдавать все запросы которые генерирует psql. Это быстрее чем ползать по исходникам

хотел узнать в дополнение к этому можно получить:является ли поле-primary key,unique и длину поля?
...
Рейтинг: 0 / 0
27.10.2010, 16:01
    #36923205
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
Zver87, Вот так я PK и Unique нахожу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
               SELECT t.table_name
		    , t.constraint_type
		    , t.constraint_name
		    , array_to_string(array_agg(c.column_name::text),',') AS keys
		 FROM information_schema.TABLE_CONSTRAINTS t
		 JOIN information_schema.CONSTRAINT_COLUMN_USAGE c 
		   ON t.constraint_name = c.constraint_name
		WHERE constraint_type
		   IN ('UNIQUE', 'PRIMARY KEY')
		  AND t.table_schema = ?
		  AND t.table_name = ?
	     GROUP BY t.constraint_name
		    , t.table_name
		    , t.constraint_type
	     ORDER BY t.table_name
		    , t.constraint_type
...
Рейтинг: 0 / 0
28.10.2010, 11:59
    #36925066
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
Zver87и длину поляinformation_schema.columns.character_maximum_length
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
01.12.2015, 17:56
    #39117670
zeka04
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
...
Рейтинг: 0 / 0
01.12.2015, 18:37
    #39117702
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить структуру полей таблицы
zeka04,

Перед публикацией творений неплохо было бы почитать документацию про системные таблицы pg_catalog и про наличествующие стандартные функции или, хотя бы, подсмотреть как это делает psql, благо тот предоставляет эту возможность.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / получить структуру полей таблицы / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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