Показати таблиці, описати таблиці, еквівалентні червоному зсуву


79

Я новачок у aws, хтось може сказати мені, що таке еквіваленти червоних зсувів команд mysql?

show tables -- redshift command
describe table_name -- redshift command

Відповіді:


105

Всю інформацію можна знайти в PG_TABLE_DEFтаблиці, документації .

Перерахування всіх таблиць у publicсхемі (за замовчуванням) - show tablesеквівалент:

SELECT DISTINCT tablename
FROM pg_table_def
WHERE schemaname = 'public'
ORDER BY tablename;

Опис усіх стовпців таблиці з назвою table_name - describe tableеквівалент:

SELECT *
FROM pg_table_def
WHERE tablename = 'table_name'
AND schemaname = 'public';

1
Чи є спосіб отримати набір значень за замовчуванням для відповідних стовпців?
Бупендер Кесвані

4
pg_table_def також повертає індекс. безпечніше використовувати select distinct table_name from information_schema.columns where table_schema = 'public'замість цього.
j_c

це в порядку стовпців?
випуск

див. alberton.info/postgresql_meta_info.html, щоб отримати простіші способи вилучення інформації про стовпці, включаючи замовлення
звіт

Можливо, раніше вони працювали на цю відповідь, але ці запити вже не повертають усі таблиці (2018-07-11). Наприклад, я створив власну схему і створив таблицю в цій схемі, і в pg_table_defтаблиці немає жодної інформації про цю таблицю. information_schemaЗамість цього запит, запропонований @j_c - для запиту , працює.
jbasko

83

Мені довелося вибрати з інформаційної схеми, щоб отримати деталі моїх таблиць і стовпців; на випадок, якщо це комусь допоможе:

SELECT * FROM information_schema.tables
WHERE table_schema = 'myschema'; 

SELECT * FROM information_schema.columns
WHERE table_schema = 'myschema' AND table_name = 'mytable'; 

1
Я зберігаю всі наші дані сегмента SQL в AWS Redshift, і поки що це єдине рішення, з яким я зіткнувся, і яке працювало для мене!
mgig

2
Я вважаю, що це найкращий метод. Схема information_s у Redshift є надмножиною pg_table. Крім того, pg_table_def, здається, страждає від якоїсь проблеми з дозволами: хоча схема / таблиця буде в pg_tables, відповідна інформація в pg_table_def НЕ буде там. Я отримую лише pg_catalog та загальнодоступні схеми. Розчарування.
Марк Героліматос

3
@MarkGerolimatos Щоб побачити таблиці в pg_table_def, необхідно додати схему до вашого search_path: SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME. Однозначно не інтуїтивно ...
Марко Рой,

33

Або просто:

\dt показати таблиці

\d+ <table name> для опису таблиці

Редагувати: працює за допомогою клієнта командного рядка psql


Це не працює для мене .. це могло б працювати в Posgres, але не Redshift .. краще піти з відповіддю Томаша.
Марк Батлер

1
Я отримую доступ до Redshift через SQLWorkbench (як рекомендується в посібнику з початку роботи з AWS). Якщо я спробую, \dtя отримую Error: Syntax error at or near "\". Ви отримуєте доступ до Redshift якимось іншим способом?
Mark Butler

2
Так, за допомогою клієнта командного рядка psql. Я оновлю свою відповідь.
Matt

2
Насправді я не розумів, що ви можете підключитися до Redshift за допомогою клієнта psql, але це є в документації Amazon. Це насправді дуже корисно. Дякую.
Mark Butler

Він показує дещо іншу інформацію, ніж рішення Томаша. Наприклад, \ d + ім'я таблиці не відображає інформацію про клавішу сортування.
Кірк

10

Відповідь Томаша Тибулевича - це хороший шлях.

SELECT * FROM pg_table_def WHERE tablename = 'YOUR_TABLE_NAME' AND schemaname = 'YOUR_SCHEMA_NAME';

Якщо ім'я схеми не визначено у шляху пошуку, цей запит покаже порожній результат. Спочатку перевірте шлях пошуку за кодом нижче.

SHOW SEARCH_PATH

Якщо ім'я схеми не визначено у шляху пошуку, ви можете скинути шлях пошуку.

SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME

Можливо, ви захочете додати коментар до шляху пошуку до відповіді Томаша. У мене вийшло це питання вперше, коли я використав подання pg, і мені довелося його дослідити.
Роб

1

Ви можете використовувати - desc /, щоб побачити визначення виду / таблиці в Redshift. Я використовую Workbench / J як клієнт SQL для Redshift, і це дає визначення на вкладці "Повідомлення" поруч із вкладкою "Результат".


1
Дякую за це! Досі не вистачає способу перерахування таблиць: /
Мадхава Каррільо

1

У наступному дописі я задокументував запити для отримання коментарів TABLE та COLUMN від Redshift. https://sqlsylvia.wordpress.com/2017/04/29/redshift-comment-views-documenting-data/

Насолоджуйтесь!

Коментарі до таблиці

    SELECT n.nspname AS schema_name
     , pg_get_userbyid(c.relowner) AS table_owner
     , c.relname AS table_name
     , CASE WHEN c.relkind = 'v' THEN 'view' ELSE 'table' END 
       AS table_type
     , d.description AS table_description
     FROM pg_class As c
     LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
     LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
     LEFT JOIN pg_description As d 
          ON (d.objoid = c.oid AND d.objsubid = 0)
     WHERE c.relkind IN('r', 'v') AND d.description > ''
     ORDER BY n.nspname, c.relname ;

Коментарі до стовпців

    SELECT n.nspname AS schema_name
     , pg_get_userbyid(c.relowner) AS table_owner
     , c.relname AS table_name
     , a.attname AS column_name
     , d.description AS column_description
    FROM pg_class AS c
    INNER JOIN pg_attribute As a ON c.oid = a.attrelid
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
    LEFT JOIN pg_description As d 
     ON (d.objoid = c.oid AND d.objsubid = a.attnum)
    WHERE c.relkind IN('r', 'v')
     AND a.attname NOT         
     IN ('cmax', 'oid', 'cmin', 'deletexid', 'ctid', 'tableoid','xmax', 'xmin', 'insertxid')
    ORDER BY n.nspname, c.relname, a.attname;

0

Ярлик

\ d для показу всіх таблиць

\ d назва таблиці для опису таблиці

\? щоб отримати більше ярликів для червоного зсуву


-6

Ви можете просто використати команду нижче для опису таблиці.

desc table-name

або

desc schema-name.table-name
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.