2010-02-16 29 views
107

¿Cuál es la mejor manera de enumerar todas las tablas dentro del esquema de información de PostgreSQL?Listar todas las tablas en postgresql information_schema

Para aclarar: estoy trabajando con un DB vacío (no he agregado ninguna de mis propias tablas), pero quiero ver todas las tablas en la estructura de esquema de información.

Respuesta

153

Debería poder ejecutar select * from information_schema.tables para obtener una lista de todas las tablas administradas por Postgres para una base de datos en particular.

También puede agregar un where table_schema = 'information_schema' para ver solo las tablas en el esquema de información.

+3

Gracias, he intentado:/dt (asterisco). (asterisco) es eso algo diferente? – littleK

+0

No sé nada sobre el/dt (asterisco). (Asterisco) lo siento. Acabo de ejecutar la consulta de selección en postgres y enlisté información sobre todas las tablas en él. Intente ejecutar la instrucción select (en su db en blanco) y vea qué devuelve. – RodeoClown

+0

Al probar el comando anterior se enumeran las siguientes tablas en information_schema: sql_features, sql_implementation_info, sql_languages, sql_packages, sql_parts, sql_sizing, sql_sizing_profiles ..... Entonces, ¿cuál es la diferencia entre esas tablas y las de information_schema.tables? – littleK

28
\dt information_schema. 

desde dentro de psql, debería estar bien.

62

Para una lista de sus tablas de destino:

SELECT table_name FROM information_schema.tables WHERE table_schema='public' 

Será sólo las tablas de la lista que crear.

+0

¿Qué hay de las tablas que no crea pero tiene permiso de acceso? – huy

+3

Esto solo mostrará tablas en el esquema público. Puede crear tablas en otros esquemas. –

6

Usted puede utilizar también

select * from pg_tables where schemaname = 'information_schema' 

En generall pg * tablas le permiten ver todo en el PP, no limitado a sus permisos (si tiene acceso a las tablas, por supuesto).

3

Para esquema privado 'xxx' en PostgreSQL:

SELECT table_name FROM information_schema.tables 
WHERE table_schema = 'xxx' AND table_type = 'BASE TABLE' 

Sin table_type = 'BASE TABLE', se mostrará una lista de tablas y vistas

7

El "\ z" COMANDO es también una buena manera de mostrar las tablas cuando dentro de la sesión psql interactiva.

por ejemplo.

# psql -d mcdb -U admin -p 5555 
mcdb=# /z 
          Access privileges for database "mcdb" 
Schema |    Name    | Type |   Access privileges 
--------+--------------------------------+----------+--------------------------------------- 
public | activities      | table | 
public | activities_id_seq    | sequence | 
public | activities_users_mapping  | table | 
[..] 
public | v_schedules_2     | view  | {admin=arwdxt/admin,viewuser=r/admin} 
public | v_systems      | view  | 
public | vapp_backups     | table | 
public | vm_client      | table | 
public | vm_datastore     | table | 
public | vmentity_hle_map    | table | 
(148 rows) 
0

Si desea una consulta de una sola línea rápida y sucia:

select * from information_schema.tables

se puede ejecutar directamente en la herramienta de consulta sin tener que abrir psql.

(Otros mensajes sugieren agradables consultas INFORMATION_SCHEMA más específicos, sino como un Newby, estoy encontrando esta consulta de una sola línea me ayuda a poder familiarizarse con la tabla)

Cuestiones relacionadas