私は複数のスキーマを持つpostgresデータベースを持っています。 psql
を使用してシェルからデータベースに接続して\dt
を実行すると、デフォルトの接続スキーマpublicが使用されます。指定できるフラグはありますか、またはスキーマをどのように変更できますか?
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 - to display databases
\c - connect to new database
更新。
あなたの質問をもう一度読みました。スキーマを表示する
\dn - list of schemas
スキーマを変更するには、試すことができます
SET search_path TO
このスキーマに関する情報を取得するには、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"
\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'.
キーワード:
SET search_path TO
例:
SET search_path TO your_schema_name;