Mostrar tablas, describir tablas equivalentes en corrimiento al rojo

79

Soy nuevo en aws, ¿alguien puede decirme cuáles son los equivalentes de corrimientos al rojo a los comandos de mysql?

show tables -- redshift command
describe table_name -- redshift command
sas
fuente

Respuestas:

105

Toda la información se puede encontrar en una PG_TABLE_DEFtabla, documentación .

Listado de todas las tablas en un publicesquema (predeterminado) - show tablesequivalente:

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

Descripción de todas las columnas de una tabla llamada table_name - describe tableequivalente:

SELECT *
FROM pg_table_def
WHERE tablename = 'table_name'
AND schemaname = 'public';
Tomasz Tybulewicz
fuente
1
¿Hay alguna forma de recuperar el conjunto de valores predeterminados de las columnas respectivas?
Bhupender Keswani
4
pg_table_def también devuelve el índice. más seguro de usar select distinct table_name from information_schema.columns where table_schema = 'public'en su lugar.
j_c
¿Está en orden de columna?
abourget
consulte alberton.info/postgresql_meta_info.html para conocer un montón de formas más sencillas de extraer información de la columna, incluido el pedido
abourget
Tal vez solían trabajar en el momento de esta respuesta, pero estas consultas ya no devuelven todas las tablas (2018-07-11). Por ejemplo, creé mi propio esquema y creé una tabla en ese esquema, y ​​la pg_table_deftabla no tiene ninguna información sobre esa tabla. La consulta sugerida por @j_c - consultar en su information_schemalugar funciona.
jbasko
83

Tuve que seleccionar del esquema de información para obtener detalles de mis tablas y columnas; en caso de que ayude a alguien:

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

SELECT * FROM information_schema.columns
WHERE table_schema = 'myschema' AND table_name = 'mytable'; 
Alex Hinton
fuente
1
Estoy almacenando todos nuestros datos de segmento SQL en AWS Redshift y, hasta ahora, esta es la única solución que he encontrado que me ha funcionado.
mgig
2
Encuentro este el método superior. El esquema de información en Redshift es un superconjunto de pg_table. Además, pg_table_def parece sufrir algún tipo de problema de permisos: mientras que un esquema / tabla estará en pg_tables, la información correspondiente en pg_table_def NO estará allí. Todo lo que obtengo es pg_catalog y esquemas públicos. Frustrante.
Mark Gerolimatos
3
@MarkGerolimatos Para ver las tablas en pg_table_def, debe agregar el esquema para su search_path: SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME. Definitivamente no es intuitivo ...
Marco Roy
33

O simplemente:

\dt para mostrar tablas

\d+ <table name> describir una mesa

Editar: funciona con el cliente de línea de comandos psql

Mate
fuente
Esto no funciona para mí ... funcionaría en Posgres pero no Redshift ... es mejor ir con la respuesta de Tomasz.
Mark Butler
1
Estoy accediendo a Redshift a través de SQLWorkbench (como se recomienda en la guía de introducción a AWS). Si lo intento, \dtlo consigo Error: Syntax error at or near "\". ¿Está accediendo a Redshift de alguna otra manera?
Mark Butler
2
Sí, usando el cliente de línea de comandos psql. Actualizaré mi respuesta.
Matt
2
En realidad, no me di cuenta de que podía conectarse a Redshift con el cliente psql, pero está en la documentación de Amazon. De hecho, es muy útil. Gracias.
Mark Butler
Muestra información ligeramente diferente a la solución de Tomasz. Por ejemplo, \ d + tablename no muestra la información de la clave de clasificación.
Kirk
10

La respuesta de Tomasz Tybulewicz es un buen camino a seguir.

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

Si el nombre del esquema no está definido en la ruta de búsqueda, esa consulta mostrará un resultado vacío. Primero verifique la ruta de búsqueda con el siguiente código.

SHOW SEARCH_PATH

Si el nombre del esquema no está definido en la ruta de búsqueda, puede restablecer la ruta de búsqueda.

SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME
Kishan Pandey
fuente
Es posible que desee agregar el comentario de la ruta de búsqueda a la respuesta de Tomasz. Tuve este problema la primera vez que usé las vistas pg y tuve que investigarlo.
Rob
1

Puede usar - desc / para ver la definición de vista / tabla en Redshift. He estado usando Workbench / J como cliente SQL para Redshift y da la definición en la pestaña Mensajes adyacente a la pestaña Resultado.

Anirudh Singh Rajawat
fuente
1
¡gracias por eso! Todavía falta una forma de enumerar las tablas: /
Madhava Carrillo
1

En la siguiente publicación, documenté consultas para recuperar comentarios TABLE y COLUMN de Redshift. https://sqlsylvia.wordpress.com/2017/04/29/redshift-comment-views-documenting-data/

¡Disfrutar!

Comentarios de la tabla

    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 ;

Comentarios de columna

    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
fuente
0

Atajo

\ d para mostrar todas las tablas

\ d nombre de tabla para describir la tabla

\? para más atajos para el corrimiento al rojo

pankaj yadav E DOT TECH
fuente
-6

Simplemente puede usar el comando a continuación para describir una tabla.

desc table-name

o

desc schema-name.table-name
Andrew Endicott
fuente