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

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';

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'; 

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


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

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.


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;

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


-6

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

desc table-name

o

desc schema-name.table-name
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.