Pokaż tabele, opisz odpowiedniki tabel w przesunięciu ku czerwieni

79

Jestem nowy w aws, czy ktoś może mi powiedzieć, jakie są odpowiedniki przesunięć ku czerwieni z poleceniami mysql?

show tables -- redshift command
describe table_name -- redshift command
sas
źródło

Odpowiedzi:

105

Wszystkie informacje można znaleźć w PG_TABLE_DEFtabeli, dokumentacji .

Lista wszystkich tabel w publicschemacie (domyślnie) - show tablesodpowiednik:

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

Opis wszystkich kolumn z tabeli o nazwie nazwa_tabeli - describe tableodpowiednik:

SELECT *
FROM pg_table_def
WHERE tablename = 'table_name'
AND schemaname = 'public';
Tomasz Tybulewicz
źródło
1
Czy istnieje sposób na pobranie wartości domyślnych zestawu odpowiednich kolumn?
Bhupender Keswani
4
pg_table_def zwraca również indeks. bezpieczniejsze w użyciu select distinct table_name from information_schema.columns where table_schema = 'public'.
j_c
czy to jest w kolejności kolumn?
abourget
zobacz alberton.info/postgresql_meta_info.html, aby uzyskać kilka prostszych sposobów wyodrębniania informacji z kolumny, w tym zamówienia
abourget
Być może pracowali w czasie tej odpowiedzi, ale te zapytania nie zwracają już wszystkich tabel (2018-07-11). Na przykład utworzyłem własny schemat i utworzyłem tabelę w tym schemacie, a pg_table_deftabela nie zawiera żadnych informacji o tej tabeli. Zapytanie sugerowane przez @j_c - information_schemazamiast tego działa.
jbasko
83

Musiałem wybrać ze schematu informacji, aby uzyskać szczegółowe informacje o moich tabelach i kolumnach; na wypadek, gdyby to komuś pomogło:

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

SELECT * FROM information_schema.columns
WHERE table_schema = 'myschema' AND table_name = 'mytable'; 
Alex Hinton
źródło
1
Przechowuję wszystkie nasze dane Segment SQL w AWS Redshift i jak dotąd jest to jedyne rozwiązanie, z którym się spotkałem, które zadziałało!
dzień
2
Uważam, że to najlepsza metoda. Information_schema w Redshift jest nadzbiorem pg_table. Co więcej, pg_table_def wydaje się cierpieć z powodu jakiegoś problemu z uprawnieniami: podczas gdy schemat / tabela będzie w pg_tables, odpowiednie informacje w pg_table_def NIE będą tam dostępne. Wszystko, co otrzymuję, to pg_catalog i publiczny schemat. Denerwujący.
Mark Gerolimatos
3
@MarkGerolimatos Aby zobaczyć tabel pg_table_def, należy dodać do schematu search_path: SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME. Zdecydowanie nie intuicyjnie ...
Marco Roy,
33

Lub po prostu:

\dt pokazać tabele

\d+ <table name> opisać tabelę

Edycja: działa przy użyciu klienta wiersza poleceń psql

Matt
źródło
U mnie to nie działa… działałoby w Posgres ale nie Redshift… lepiej iść z odpowiedzią Tomasza.
Mark Butler
1
Uzyskuję dostęp do Redshift przez SQLWorkbench (zgodnie z zaleceniami zawartymi w przewodniku AWS wprowadzającym). Jeśli spróbuję \dt, dostanę Error: Syntax error at or near "\". Czy uzyskujesz dostęp do Przesunięcia ku czerwieni w inny sposób?
Mark Butler
2
Tak, używając klienta wiersza poleceń psql. Zaktualizuję swoją odpowiedź.
Matt
2
Właściwie nie zdawałem sobie sprawy, że możesz połączyć się z Redshift za pomocą klienta psql, ale jest to w dokumentacji Amazon. W rzeczywistości jest to bardzo przydatne. Dzięki.
Mark Butler,
Pokazuje nieco inne informacje niż rozwiązanie Tomasza. Na przykład \ d + nazwa_tabeli nie wyświetla informacji o kluczu sortowania.
Kirk
10

Odpowiedź Tomasza Tybulewicza to dobra droga.

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

Jeśli nazwa schematu nie jest zdefiniowana w ścieżce wyszukiwania, zapytanie wyświetli pusty wynik. Najpierw sprawdź ścieżkę wyszukiwania za pomocą poniższego kodu.

SHOW SEARCH_PATH

Jeśli nazwa schematu nie jest zdefiniowana w ścieżce wyszukiwania, możesz zresetować ścieżkę wyszukiwania.

SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME
Kishan Pandey
źródło
Możesz dodać komentarz dotyczący ścieżki wyszukiwania do odpowiedzi Tomasza. Miałem ten problem, gdy po raz pierwszy korzystałem z widoków pg i musiałem go zbadać.
Rob
1

Możesz użyć - desc /, aby zobaczyć definicję widoku / tabeli w Przesunięciu ku czerwieni. Używam Workbench / J jako klienta SQL dla Redshift i podaje definicję w zakładce Komunikaty obok zakładki Wynik.

Anirudh Singh Rajawat
źródło
1
Dziękuję za to! Wciąż brakuje sposobu na umieszczenie tabel: /
Madhava Carrillo
1

W poniższym poście udokumentowałem zapytania, aby pobrać komentarze TABLE i COLUMN z Redshift. https://sqlsylvia.wordpress.com/2017/04/29/redshift-comment-views-documenting-data/

Cieszyć się!

Komentarze do tabeli

    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 ;

Komentarze do kolumn

    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;
Sylvia
źródło
0

Skrót

\ d, aby wyświetlić wszystkie tabele

\ d nazwa tabeli opisująca tabelę

\? aby uzyskać więcej skrótów do przesunięcia ku czerwieni

pankaj yadav E DOT TECH
źródło
-6

Możesz po prostu użyć poniższego polecenia, aby opisać tabelę.

desc table-name

lub

desc schema-name.table-name
Andrew Endicott
źródło