postgresql - usuarios - seleccionar db en postgres
Listar tablas en un esquema PostgreSQL (4)
Cuando hago un /dt
en psql, solo obtengo una lista de tablas en el esquema actual ( public
por defecto).
¿Cómo puedo obtener una lista de todas las tablas en todos los esquemas o un esquema en particular?
Alternativamente a information_schema
es posible usar pg_tables
:
select * from pg_tables where schemaname=''public'';
En todos los esquemas:
=> /dt *.*
En un esquema particular:
=> /dt public.*
Es posible usar expresiones regulares con algunas restricciones.
/dt (public|s).(s|t)
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
public | s | table | cpn
public | t | table | cpn
s | t | table | cpn
Los usuarios avanzados pueden usar notaciones de expresiones regulares, como clases de caracteres, por ejemplo [0-9] para hacer coincidir cualquier dígito. Todos los caracteres especiales de expresiones regulares funcionan como se especifica en la Sección 9.7.3, a excepción de. que se toma como separador como se mencionó anteriormente, * que se traduce a la notación de expresión regular. ,? que se traduce a., y $ que se empareja literalmente. ¿Puedes emular estos caracteres de patrón en la necesidad escribiendo? para., (R + |) para R , o (R |) para R ?. $ no es necesario como un carácter de expresión regular ya que el patrón debe coincidir con el nombre completo, a diferencia de la interpretación habitual de las expresiones regulares (en otras palabras, $ se agrega automáticamente a su patrón). Escriba * al principio y / o al final si no desea que el patrón esté anclado. Tenga en cuenta que dentro de las comillas dobles, todos los caracteres especiales de expresiones regulares pierden sus significados especiales y se comparan literalmente. Además, los caracteres especiales de expresiones regulares se hacen coincidir literalmente en los patrones de nombre del operador (es decir, el argumento de / do).
Para aquellos que se encuentren con esto en el futuro:
Si desea ver una lista de relaciones para varios esquemas:
$psql mydatabase
mydatabase=# SET search_path TO public, usa; #schema examples
SET
mydatabase=# /dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | counties | table | postgres
public | spatial_ref_sys | table | postgres
public | states | table | postgres
public | us_cities | table | postgres
usa | census2010 | table | postgres
Puedes seleccionar las tablas desde el esquema de information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = ''public''