Я новачок у aws, хтось може сказати мені, що таке еквіваленти червоних зсувів команд mysql?
show tables -- redshift command
describe table_name -- redshift command
Відповіді:
Всю інформацію можна знайти в 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';
select distinct table_name from information_schema.columns where table_schema = 'public'
замість цього.
pg_table_def
таблиці немає жодної інформації про цю таблицю. information_schema
Замість цього запит, запропонований @j_c - для запиту , працює.
Мені довелося вибрати з інформаційної схеми, щоб отримати деталі моїх таблиць і стовпців; на випадок, якщо це комусь допоможе:
SELECT * FROM information_schema.tables
WHERE table_schema = 'myschema';
SELECT * FROM information_schema.columns
WHERE table_schema = 'myschema' AND table_name = 'mytable';
pg_table_def
, необхідно додати схему до вашого search_path: SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME
. Однозначно не інтуїтивно ...
Або просто:
\dt
показати таблиці
\d+ <table name>
для опису таблиці
Редагувати: працює за допомогою клієнта командного рядка psql
\dt
я отримую Error: Syntax error at or near "\"
. Ви отримуєте доступ до Redshift якимось іншим способом?
Відповідь Томаша Тибулевича - це хороший шлях.
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
Ви можете використовувати - desc /, щоб побачити визначення виду / таблиці в Redshift. Я використовую Workbench / J як клієнт SQL для Redshift, і це дає визначення на вкладці "Повідомлення" поруч із вкладкою "Результат".
У наступному дописі я задокументував запити для отримання коментарів 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;
Ярлик
\ d для показу всіх таблиць
\ d назва таблиці для опису таблиці
\? щоб отримати більше ярликів для червоного зсуву
Ви можете просто використати команду нижче для опису таблиці.
desc table-name
або
desc schema-name.table-name