Я ищу точную информацию в базе данных, о которой я ничего не знаю.
Это сторонний продукт, они не спешат отвечать на некоторые вопросы, и я знаю, что данные лежат в этой базе данных, поэтому я хочу немного заняться ретро-разработкой.
Учитывая одну таблицу, возможно ли иметь список имен столбцов для этой таблицы?
Например, в SqlServer можно вывести таблицу в операторы многократного использования CREATE
, которые содержат текстовые списки всех столбцов, из которых состоит таблица.
postgresql
information-schema
catalogs
Стефан Роллан
источник
источник
\dt[+] table_name
вpsql
.Ответы:
В дополнение к командной строке, которую
\d+ <table_name>
вы уже нашли, вы также можете использовать информационную схему для поиска данных столбца, используяinformation_schema.columns
:Примечание. В соответствии с приведенным выше примером убедитесь, что значения заключены в кавычки.
источник
\x on
или,\pset expanded on
чтобы сделать результаты запроса линейными (а не табличными) и, таким образом, их проще читать stackoverflow.com/a/9605093/513397\d+ public.*
чтобы получить описание (schema + indeces / fkeys / triggers) всех ваших таблиц и представлений вpublic
схеме. Мы используем его в нашем скрипте ловушки перед фиксацией, чтобы отслеживать изменения в БД, вносимые каждым коммитом.В качестве дополнения к другим ответам даже оператор SELECT, который не возвращает строк, предоставит имена столбцов вам и коду приложения.
Разрешения могут вступать в игру с любым из этих подходов.
источник
Информация схема является медленным и надежным способом: это стандартизированное и в значительной степени переносит на другие базы данных , которые поддерживают его. И он будет продолжать работать в основных версиях.
Однако представления в информационной схеме часто объединяются во многих таблицах из системных каталогов, чтобы соответствовать строго стандартизированному формату - многие из которых в большинстве случаев являются просто бесполезным грузом. Это делает их медленными .
Разработчики Postgres не дают обещаний, но основы (например, то, что здесь необходимо) не изменятся в основных версиях.
psql
(родной интерфейс командной строки), конечно, выбирает быструю полосу и напрямую запрашивает источник. Если вы начнетеpsql
с этого параметра-E
,\d
будет отображаться SQL, стоящий за командами с обратной косой чертой . Или\set ECHO_HIDDEN on
из командной строки psql. Исходя из этого, вы можете построить ответ на свой вопрос.Быстрее, чем запросы
information_schema.columns
. ПопробуйтеEXPLAIN ANALYZE
убедиться в этом сами. По-прежнему вряд ли имеет значение для разового поиска. Но может иметь значение, если используется в запросе / функции, которая повторяется много раз.Есть также тонкие различия в видимости. Детальное сравнение:
источник
-E
и показываете людям, как получить sql из psql.psql
на PostgreSQL 11+Если вы ищете для типов столбцов в запросе, вы можете использовать
psql
«S\gdesc
источник
Только PostgreSQL
Это несколько нелепо, но может быть претендентом, если вы ищете самый короткий возможный SQL:
или даже короче (при условии, что в таблице есть хотя бы одна строка)
Распечатка сохраняет порядок. Если вы не заботитесь о заказе и у вас
hstore
установлено расширение, вы можете сделать еще корочеисточник