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.