AWS를 처음 사용하는 사람인데 mysql 명령에 대한 redshifts의 동등 항목이 무엇인지 말해 줄 수 있습니까?
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에 액세스하고 있습니까?
Tomasz Tybulewicz 답변은 좋은 방법입니다.
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를 Redshift 용 SQL 클라이언트로 사용해 왔으며 결과 탭 옆에있는 메시지 탭에 정의가 제공됩니다.
다음 게시물에서는 Redshift에서 TABLE 및 COLUMN 주석을 검색하는 쿼리를 문서화했습니다. 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 테이블을 설명하는 테이블 이름
\? redshift에 대한 더 많은 단축키