He creado la tabla donoren el esquema referencesegún:
CREATE TABLE reference.donor (
donor_code smallint PRIMARY KEY,
donor_name character varying NOT NULL,
donor_type smallint REFERENCES reference.donor_type (type_id),
alpha_2_code char(2) REFERENCES reference.iso_3166_1 (alpha_2_code)
);
He poblado la tabla según:
INSERT INTO reference.donor (donor_code, donor_name, donor_type, alpha_2_code)
SELECT donor_code, donor_name, donor_type, alpha_2_code
FROM reference.donor_template;
Cuando corro:
\dt+ reference.*
dentro de psql veo la reference.donortabla:
List of relations
Schema | Name | Type | Owner | Size | Description
-----------+----------------+-------+----------+-------+-------------
reference | donor | table | postgres | 16 kB |
reference | donor_template | table | postgres | 16 kB |
reference | donor_type | table | postgres | 16 kB |
reference | iso_3166_1 | table | postgres | 48 kB |
(4 rows)
Pero cuando ejecuto \dt+ donor*(o \dt(+)) no veo la reference.donortabla:
List of relations
Schema | Name | Type | Owner | Size | Description
-----------+----------------+-------+----------+-------+-------------
oecd_cl | donor | table | postgres | 16 kB |
reference | donor_template | table | postgres | 16 kB |
reference | donor_type | table | postgres | 16 kB |
(3 rows)
¿Por qué solo puedo ver la reference.donortabla si ejecuto \dt+ reference.*o \dt+ *.donor?
Esperaba \dt(o \dt+) mostrarlo, pero no lo hace.
Mi search_pathincluye el esquema referencey el usuario postgrestiene todos los permisos en el esquema referencey todas las tablas en el esquema según:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
Solo para aclarar, tengo dos donortablas, pero están en dos esquemas diferentes, es decir, oecd.donor& reference.donor. (Puedo ver oecd.donorsin ningún problema cuando uso \dt(+)dentro de psql).
fuente

search_pathprimero y sin que yo sepa los nombres de la tabla / esquema de antemano? ¿O soy mejor de consultar elinformation schemapSELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;. Ej .: ?\dt *.*instrucciones de la cotización.El primer comando funciona porque todas las tablas enumeradas tienen 'referencia' en su esquema. El segundo comando funciona igual para 'donante'. entonces la relación "reference.iso_3166_1" no tiene ningún 'donante' en su nombre. si desea enumerar iso_3166_1, simplemente intente
ref: http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-PATTERNS
fuente
reference | donorno aparece en la lista con el segundo comando.\dt(o\dt+) no enumera la tabla reference.donor. Todo está bien según la tabla reference.iso_3166_1.