Tabellen anzeigen, Tabellen beschreiben, die in Rotverschiebung äquivalent sind


79

Ich bin neu bei aws. Kann mir jemand sagen, was Rotverschiebungen zu MySQL-Befehlen entsprechen?

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

Antworten:


105

Alle Informationen finden Sie in einer PG_TABLE_DEFTabelle, Dokumentation .

Auflisten aller Tabellen in einem publicSchema (Standard) - show tablesÄquivalent:

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

Beschreibung aller Spalten aus einer Tabelle mit dem Namen table_name - describe tableÄquivalent:

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

1
Gibt es eine Möglichkeit, Standardwertsätze der jeweiligen Spalten abzurufen?
Bhupender Keswani

4
pg_table_def gibt auch den Index zurück. sicherer zu verwenden select distinct table_name from information_schema.columns where table_schema = 'public'.
j_c

ist das in Spaltenreihenfolge?
Abourget

Unter alberton.info/postgresql_meta_info.html finden Sie eine Reihe einfacherer Möglichkeiten zum Extrahieren von Spalteninformationen, einschließlich der Bestellung
abourget

Vielleicht haben sie zum Zeitpunkt dieser Antwort gearbeitet, aber diese Abfragen geben nicht mehr alle Tabellen zurück (2018-07-11). Zum Beispiel habe ich mein eigenes Schema erstellt und eine Tabelle in diesem Schema erstellt, und die pg_table_defTabelle enthält keine Informationen zu dieser Tabelle. Die von @j_c vorgeschlagene Abfrage information_schemafunktioniert stattdessen.
Jbasko

82

Ich musste aus dem Informationsschema auswählen, um Details zu meinen Tabellen und Spalten zu erhalten. falls es jemandem hilft:

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

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

1
Ich speichere alle unsere Segment-SQL-Daten in AWS Redshift, und bisher ist dies die einzige Lösung, auf die ich gestoßen bin und die für mich funktioniert hat!
mgig

2
Ich finde das die überlegene Methode. Das Informationsschema in Redshift ist eine Obermenge von pg_table. Darüber hinaus scheint pg_table_def unter einer Art Berechtigungsproblem zu leiden: Während sich ein Schema / eine Tabelle in pg_tables befindet, sind die entsprechenden Informationen in pg_table_def NICHT vorhanden. Ich bekomme nur pg_catalog und ein öffentliches Schema. Frustrierend.
Mark Gerolimatos

3
@MarkGerolimatos Um Ihre Tabellen anzuzeigen pg_table_def, müssen Sie das Schema zu SEARCH_PATH hinzufügen : SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME. Auf jeden Fall nicht intuitiv ...
Marco Roy

33

Oder einfach:

\dt Tabellen anzeigen

\d+ <table name> eine Tabelle beschreiben

Bearbeiten: Funktioniert mit dem psql-Befehlszeilenclient


Das funktioniert bei mir nicht. Es würde in Posgres funktionieren, aber nicht in Redshift. Besser zu Tomasz 'Antwort.
Mark Butler

1
Ich greife über SQLWorkbench auf Redshift zu (wie im AWS-Handbuch für die ersten Schritte empfohlen). Wenn ich es versuche, \dtbekomme ich Error: Syntax error at or near "\". Greifen Sie auf andere Weise auf Redshift zu?
Mark Butler

2
Ja, mit dem psql-Befehlszeilenclient. Ich werde meine Antwort aktualisieren.
Matt

2
Eigentlich wusste ich nicht, dass Sie mit dem psql-Client eine Verbindung zu Redshift herstellen können, aber es steht in der Amazon-Dokumentation. Es ist eigentlich sehr nützlich. Vielen Dank.
Mark Butler

Es zeigt etwas andere Informationen als die Lösung von Tomasz. Beispielsweise zeigt \ d + Tabellenname keine Sortierschlüsselinformationen an.
Kirk

10

Die Antwort von Tomasz Tybulewicz ist ein guter Weg.

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

Wenn im Suchpfad kein Schemaname definiert ist, zeigt diese Abfrage ein leeres Ergebnis an. Bitte überprüfen Sie zuerst den Suchpfad anhand des folgenden Codes.

SHOW SEARCH_PATH

Wenn im Suchpfad kein Schemaname definiert ist, können Sie den Suchpfad zurücksetzen.

SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME

Möglicherweise möchten Sie den Kommentar zum Suchpfad zu Tomasz 'Antwort hinzufügen. Ich hatte dieses Problem, als ich die pg-Ansichten zum ersten Mal verwendete und es untersuchen musste.
Rob

1

Mit - desc / können Sie die Ansichts- / Tabellendefinition in Redshift anzeigen. Ich habe Workbench / J als SQL-Client für Redshift verwendet und es gibt die Definition auf der Registerkarte Nachrichten neben der Registerkarte Ergebnis.


1
Dank dafür! Es fehlt immer noch eine Möglichkeit, Tabellen aufzulisten: /
Madhava Carrillo

1

Im folgenden Beitrag habe ich Abfragen dokumentiert, um TABLE- und COLUMN-Kommentare von Redshift abzurufen. https://sqlsylvia.wordpress.com/2017/04/29/redshift-comment-views-documenting-data/

Genießen!

Tabellenkommentare

    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 ;

Spaltenkommentare

    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

Abkürzung

\ d für alle Tabellen anzeigen

\ d Tabellenname zur Beschreibung der Tabelle

\? für weitere Verknüpfungen für Rotverschiebung


-6

Sie können einfach den folgenden Befehl verwenden, um eine Tabelle zu beschreiben.

desc table-name

oder

desc schema-name.table-name
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.