Эквивалент "описать таблицу" в PgAdmin3
Вопрос спросил и ответил:
Как известно многим, PostgreSQL не поддерживает describe table
или describe view
. Как можно найти в google, PostgreSQL вместо этого использует \d+
.
Однако, если вы обращаетесь к PostgreSQL с помощью PgAdmin (я фактически использую PgAdmin3), то \d+
не работает. Что вы делаете вместо этого?
Я подумал об этом, когда играл с инструментом запроса в PgAdmin3. У меня было "хорошо, дух!" момент, когда я подумал посмотреть на домашнее окно PgAdmin3 и на дерево слева от этого окна. В разделе
<servername>
-> <databasename>
-> Schemas
-> <schemaname>
-> Tables
был список моих таблиц,
и нажатие на имя таблицы показало мне текст
очень похоже на то, что \d+
показал бы мне.
Так что в интересах кого-то, кто не сразу обнаружил это, вот ответ.
Ответы
Ответ 1
PostgreSQL также поддерживает стандартную информационную схему SQL для извлечения деталей объектов в базе данных.
то есть. для получения информации о столбцах вы можете запросить представление information_schema.columns
:
SELECT *
FROM information_schema.columns
WHERE table_name = '????';
Отметьте здесь для конкретных сведений PostgreSQL о информационной схеме.
Ответ 2
Команда psql\d отправляет набор запросов в базу данных для запроса схемы, затем печатает результат.
Вы можете использовать опцию '-E' psql, чтобы отображать эти запросы, если вы хотите получать подобную информацию напрямую через SQL.
Сказав это, psql использует внутренние таблицы каталога Postgresql вместо стандартизованной схемы "information_schema" (см. ответ от garethflowers). Поэтому, если вы заботитесь о переносимости или даже гарантируете, что он будет продолжать работать с одного выпуска на следующий, вы, вероятно, должны использовать information_schema.
Ответ 3
и прямой из оболочки bash:
psql -d "$db_name" -c '
SELECT
ordinal_position , table_name , column_name , data_type , is_nullable
FROM information_schema.columns
WHERE 1=1
AND table_name = '\''my_table'\''
;'
# or just the col names
psql -d "$my_db" -t -c \
"SELECT column_name FROM information_schema.columns
WHERE 1=1 AND table_name='my_table'"
Ответ 4
Чтобы добавить к знанию вашего отношения, как я должен был, вы можете дополнительно расширить таблицы, чтобы увидеть столбцы, а затем, щелкнув правой кнопкой мыши, вы можете просмотреть свойства каждого столбца.
Ответ 5
Чтобы получить полное представление о том, что запрос описания вернется, щелкните правой кнопкой мыши на отношении/интересующей таблице и выберите Свойства..., затем используйте вкладку Столбцы в предоставленном окне.
Разница лишь в том, что окно не дает информацию об отношении внешнего ключа.