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:
Alle Informationen finden Sie in einer PG_TABLE_DEF
Tabelle, Dokumentation .
Auflisten aller Tabellen in einem public
Schema (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';
select distinct table_name from information_schema.columns where table_schema = 'public'
.
pg_table_def
Tabelle enthält keine Informationen zu dieser Tabelle. Die von @j_c vorgeschlagene Abfrage information_schema
funktioniert stattdessen.
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';
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 ...
Oder einfach:
\dt
Tabellen anzeigen
\d+ <table name>
eine Tabelle beschreiben
Bearbeiten: Funktioniert mit dem psql-Befehlszeilenclient
\dt
bekomme ich Error: Syntax error at or near "\"
. Greifen Sie auf andere Weise auf Redshift zu?
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
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.
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;
Abkürzung
\ d für alle Tabellen anzeigen
\ d Tabellenname zur Beschreibung der Tabelle
\? für weitere Verknüpfungen für Rotverschiebung
Sie können einfach den folgenden Befehl verwenden, um eine Tabelle zu beschreiben.
desc table-name
oder
desc schema-name.table-name