una - Mostrar tablas en PostgreSQL
ver contenido de una tabla en postgresql (18)
¿Cuál es el equivalente a show tables
(desde MySQL) en PostgreSQL?
Primer inicio de sesión como usuario postgres:
sudo su - postgres
conéctese al db requerido:
psql -d databaseName
/dt
devolvería la lista de todas las tablas en la base de datos a la que está conectado.
(Por completitud)
También puede consultar el esquema de información (estándar de SQL):
SELECT
table_schema || ''.'' || table_name
FROM
information_schema.tables
WHERE
table_type = ''BASE TABLE''
AND
table_schema NOT IN (''pg_catalog'', ''information_schema'');
Desde la interfaz de línea de comandos psql
, esto muestra todas las tablas en el esquema actual:
/dt
Programáticamente (o desde la interfaz psql
también, por supuesto):
SELECT * FROM pg_catalog.pg_tables;
Las tablas del sistema viven en la base de datos pg_catalog.
En primer lugar tienes que conectarte con tu base de datos como
mi base de datos es ubuntu
usa este comando para conectar
/c ubuntu
Este mensaje mostrará
"Ahora está conectado a la base de datos" ubuntu "como usuario" postgres "."
Ahora
Ejecute este comando para mostrar todas las tablas en él
/d+
Iniciar sesión como superusuario:
sudo -u postgres psql
Puede enumerar todas las bases de datos y usuarios por comando /l
, (enumerar otros comandos por /?
).
Ahora, si desea ver otras bases de datos, puede cambiar el usuario / base de datos mediante el comando /c
como /c template1
, /c postgres postgres
y usar /d
, /dt
o /dS
para ver tablas / views / etc.
La ejecución de psql con el indicador -E hará eco de la consulta utilizada internamente para implementar / dt y similar:
sudo -u postgres psql -E
postgres=# /dt
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN ''r'' THEN ''table'' WHEN ''v'' THEN ''view'' WHEN ''i'' THEN ''index'' WHEN ''S'' THEN ''sequence'' WHEN ''s'' THEN ''special'' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN (''r'','''')
AND n.nspname <> ''pg_catalog''
AND n.nspname <> ''information_schema''
AND n.nspname !~ ''^pg_toast''
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************
Primero conéctese con la base de datos usando el siguiente comando
/c database_name
Y verá este mensaje. Ahora está conectado a la base de datos nombre_de base de datos y ejecutan el siguiente comando
SELECT * FROM table_name;
En database_name y table_name solo actualice con su base de datos y el nombre de la tabla
Primero, puede conectarse con su base de datos postgres usando postgre.app en mac o usando postico. Ejecuta el siguiente comando:
psql -h localhost -p port_number -d database_name -U user_name -W
luego ingresas tu contraseña, esto debería dar acceso a tu base de datos
Puede listar las tablas en la base de datos actual con /dt
.
Fwiw, /d tablename
mostrará detalles sobre la tabla dada, algo así como show columns from tablename
en MySQL, pero con un poco más de información.
Puede usar el terminal interactivo Psql de PostgreSQL para mostrar tablas en PostgreSQL.
1. Inicia Psql
Por lo general, puede ejecutar el siguiente comando para ingresar a psql:
psql DBNAME USERNAME
Por ejemplo, psql template1 postgres
Una de las situaciones que podría tener es: suponga que inicia sesión como root y no recuerda el nombre de la base de datos. Puede ingresar primero en Psql ejecutando:
sudo -u postgres psql
En algunos sistemas, el comando sudo no está disponible, en su lugar puede ejecutar cualquiera de los siguientes comandos:
psql -U postgres
psql --username=postgres
2. Mostrar tablas
Ahora en Psql puedes ejecutar comandos como:
-
/?
listar todos los comandos -
/l
lista de bases de datos -
/conninfo
muestra información sobre la conexión actual -
/c [DBNAME]
conecta a la nueva base de datos, por ejemplo,/c template1
-
/dt
list tables - Luego puede ejecutar sentencias de SQL, por ejemplo,
SELECT * FROM my_table;
(Nota: una declaración debe terminar con un punto;
coma;
) -
/q
salir de psql
Si está utilizando pgAdmin4 en PostgreSQL, puede usar esto para mostrar las tablas en su base de datos:
select * from information_schema.tables where table_schema=''public'';
Si solo desea ver la lista de tablas que ha creado, solo puede decir:
/dt
Pero también tenemos PATTERN
que te ayudará a personalizar qué tablas mostrar. Para mostrar todos los esquemas pg_catalog
incluidos, puede agregar *
.
/dt *
Si lo haces: /?
/ dt [S +] [PATTERN] lista de tablas
Tenga en cuenta que /dt
solo enumerará las tablas en el esquema público de la base de datos que está utilizando. Me gusta mantener mis tablas en esquemas separados, por lo que la respuesta aceptada no me funcionó.
Para enumerar todas las tablas dentro de un esquema específico , necesitaba:
1) Conectar a la base de datos deseada:
psql mydb
2) Especifique el nombre del esquema para el que quiero ver las tablas después del comando /dt
, como esto:
/dt myschema.*
Esto me muestra los resultados que me interesan:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
Usando psql : / dt
O:
SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = ''r''
AND relname NOT LIKE ''pg_%''
ORDER BY 1
/ dt (no * obligatorio): listará todas las tablas de una base de datos existente a la que ya está conectado. También es útil tener en cuenta:
/ d [nombre_tabla]: mostrará todas las columnas de una tabla determinada, incluida la información de tipo, las referencias y las restricciones clave.
/ dt listará las tablas, y "/ pset pager off" las muestra en la misma ventana, sin cambiar a una separada. Me encanta esa característica a muerte en dbshell.
usar solo ver tablas
=> /dt
si quieres ver tablas de esquemas
=>/dt+
Si quieres ver tablas de esquemas específicas.
=>/dt schema_name.*
select * from pg_catalog.pg_tables
where schemaname != ''information_schema'' and schemaname != ''pg_catalog'';