답변:
PostgreSQL에서 시스템은 검색 할 스키마를 찾는 검색 경로를 따라 의미하는 테이블을 결정합니다.
검색 경로의 첫 번째 일치 테이블은 원하는 것으로 간주됩니다. 그렇지 않으면 일치하는 테이블 이름이 데이터베이스의 다른 스키마에 존재하더라도 일치하는 것이 없으면 오류가 발생합니다.
현재 검색 경로를 표시하려면 다음 명령을 사용할 수 있습니다.
SHOW search_path;
그리고 새로운 스키마를 경로에 넣으려면 다음을 사용할 수 있습니다.
SET search_path TO myschema;
또는 여러 스키마를 원할 경우 :
SET search_path TO myschema, public;
참조 : https://www.postgresql.org/docs/current/static/ddl-schemas.html
\l - Display database
\c - Connect to database
\dn - List schemas
\dt - List tables inside public schemas
\dt schema1. - List tables inside particular schemas. For eg: 'schema1'.
psql 명령에서 마침표와 함께 스키마 이름을 사용하여이 스키마에 대한 정보를 얻으십시오.
설정:
test=# create schema test_schema;
CREATE SCHEMA
test=# create table test_schema.test_table (id int);
CREATE TABLE
test=# create table test_schema.test_table_2 (id int);
CREATE TABLE
관계 목록 표시 test_schema
:
test=# \dt test_schema.
List of relations
Schema | Name | Type | Owner
-------------+--------------+-------+----------
test_schema | test_table | table | postgres
test_schema | test_table_2 | table | postgres
(2 rows)
test_schema.test_table
정의 표시 :
test=# \d test_schema.test_table
Table "test_schema.test_table"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
모든 테이블 표시 test_schema
:
test=# \d test_schema.
Table "test_schema.test_table"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
Table "test_schema.test_table_2"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
기타...
이것은 오래되었지만 db에 연결하기 위해 별칭에 내보내기를 넣었습니다.
alias schema_one.con="PGOPTIONS='--search_path=schema_one' psql -h host -U user -d database etc"
그리고 다른 스키마의 경우 :
alias schema_two.con="PGOPTIONS='--search_path=schema_two' psql -h host -U user -d database etc"
export
별칭과 세미콜론 은 생략 합니다. 이 방법 PGOPTIONS
은 psql을 떠난 후에도 유지되지 않습니다.
SET search_path
모든 단일 쿼리에를 추가하는 것보다 훨씬 실용적인 좋은 아이디어 입니다. 감사합니다!