web-dev-qa-db-ja.com

psqlを使用しているときにpostgresでスキーマを選択する方法

私は複数のスキーマを持つpostgresデータベースを持っています。 psqlを使用してシェルからデータベースに接続して\dtを実行すると、デフォルトの接続スキーマpublicが使用されます。指定できるフラグはありますか、またはスキーマをどのように変更できますか?

91
mehany

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

117
Ciro Pedrini

データベースを変更しますか?

\l - to display databases
\c - connect to new database

更新。

あなたの質問をもう一度読みました。スキーマを表示する

\dn - list of schemas

スキーマを変更するには、試すことができます

SET search_path TO
59
miholeus

このスキーマに関する情報を取得するには、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 | 

等...

21
klin

これは古いですが、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"
10
techbrownbags
\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'.
8
Mohamed Sameer

キーワード:

SET search_path TO

例:

SET search_path TO your_schema_name;
2
appsdownload