Я новичок в 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
таблице нет никакой информации об этой таблице. Запрос, предложенный @j_c - information_schema
вместо этого, работает.
Мне пришлось выбрать из информационной схемы, чтобы получить подробную информацию о моих таблицах и столбцах; если это кому-то поможет:
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 tablename для описания таблицы
\? для большего количества ярлыков для красного смещения
Вы можете просто использовать приведенную ниже команду для описания таблицы.
desc table-name
или же
desc schema-name.table-name