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 particular?
fuente
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 particular?
En todos los esquemas:
=> \dt *.*
En un esquema particular:
=> \dt public.*
Es posible utilizar 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 anotaciones de expresiones regulares como clases de caracteres, por ejemplo [0-9] para que coincida con cualquier dígito. Todos los caracteres especiales de expresión regular funcionan como se especifica en la Sección 9.7.3, excepto
.
que se toma como un separador como se mencionó anteriormente,*
que se traduce a la notación de expresión regular.*
,?
que se traduce.
y$
que coincide literalmente. Puede emular estos caracteres de patrón según sea necesario escribiendo?
para.
,(R+|)
paraR*
o(R|)
paraR?
.$
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 se ancle el patrón. Tenga en cuenta que entre comillas dobles, todos los caracteres especiales de expresión regular pierden sus significados especiales y coinciden literalmente. Además, los caracteres especiales de la expresión regular coinciden literalmente en los patrones de nombre de operador (es decir, el argumento de\do
).
\dt
es equívoco\dt public.*
, ¿estoy en lo cierto?\dt public.user_info, public.user_scope
?\dt public.a; \dt public.b;
solo en una línea.search_path
, y que por defecto es"$user", public.*
. En consecuencia,set search_path=s; \dt
se enumerarán todas las tablas en el esquemas
.Puede seleccionar las tablas de
information_schema
fuente
Alternativamente
information_schema
, es posible usarpg_tables
:fuente
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
no enumerar elementos delpublic
esquema, pero elpg_tables
método funcionó bien. ¡Muchas gracias!Para aquellos que se encuentren con esto en el futuro:
Si desea ver una lista de relaciones para varios esquemas:
fuente