it-swarm.com.de

Wie wähle ich ein Schema in postgres aus, wenn ich psql verwende?

Ich habe eine Postgres-Datenbank mit mehreren Schemata. Wenn ich über eine Shell mit psql eine Verbindung zur Datenbank herstelle und \dt verwendet das Standardverbindungsschema public. Gibt es ein Flag, das ich angeben kann, oder wie kann ich das Schema ändern?

109
mehany

In PostgreSQL bestimmt das System, welche Tabelle gemeint ist, indem es einem Suchpfad folgt, der eine Liste der zu durchsuchenden Schemata darstellt.

Die erste übereinstimmende Tabelle im Suchpfad wird als die gewünschte Tabelle angesehen. Andernfalls wird ein Fehler ausgegeben, wenn keine Übereinstimmung vorliegt, auch wenn übereinstimmende Tabellennamen in anderen Schemata in der Datenbank vorhanden sind.

Um den aktuellen Suchpfad anzuzeigen, können Sie den folgenden Befehl verwenden:

SHOW search_path;

Und um das neue Schema in den Pfad einzufügen, können Sie Folgendes verwenden:

SET search_path TO myschema;

Oder wenn Sie mehrere Schemas möchten:

SET search_path TO myschema, public;

Verweis: https://www.postgresql.org/docs/current/static/ddl-schemas.html

135
Ciro Pedrini

Möchten Sie die Datenbank ändern?

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

Aktualisieren.

Ich habe deine Frage noch einmal gelesen. Anzeigen von Schemas

\dn - list of schemas

Sie können versuchen, das Schema zu ändern

SET search_path TO
64
miholeus

Verwenden Sie den Schemanamen mit Punkt im Befehl psql, um Informationen zu diesem Schema abzurufen.

Konfiguration:

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

Liste der Relationen in test_schema Anzeigen:

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)

Zeige test_schema.test_table Definition:

test=# \d test_schema.test_table
Table "test_schema.test_table"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 

Zeige alle Tabellen in 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 | 

usw...

23
klin
\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'.
14
Mohamed Sameer

Dies ist alt, aber ich habe Exporte in meinen Alias ​​für die Verbindung mit der Datenbank eingefügt:

alias schema_one.con="PGOPTIONS='--search_path=schema_one' psql -h Host -U user -d database etc"

Und für ein anderes Schema:

alias schema_two.con="PGOPTIONS='--search_path=schema_two' psql -h Host -U user -d database etc"
10
techbrownbags

stichwort :

SET search_path TO

beispiel:

SET search_path TO your_schema_name;
2
appsdownload