Komenda „use database_name” w PostgreSQL

366

Jestem początkującym w PostgreSQL.

Chcę połączyć się z inną bazą danych z edytora zapytań Postgres - jak USEpolecenie MySQL lub MS SQL Server.

Znalazłem \c databasename, przeszukując Internet, ale działa tylko na psql . Kiedy próbuję z edytora zapytań PostgreSQL, pojawia się błąd składniowy.

Muszę zmienić bazę danych przez pgscripting. Czy ktoś wie jak to zrobić?

sam
źródło
Możliwy duplikat Jak przełączać bazy danych w psql?
AlikElzin-kilaka
Inną opcją jest bezpośrednie połączenie ze schematem. Przykład: sudo -u postgres psql -d my_database_name. Źródło
AlikElzin-kilaka,

Odpowiedzi:

381

Kiedy uzyskasz połączenie z PostgreSQLnim, zawsze będzie to konkretna baza danych. Aby uzyskać dostęp do innej bazy danych, musisz uzyskać nowe połączenie.

Użycie \cw psql zamyka stare połączenie i uzyskuje nowe, używając określonej bazy danych i / lub poświadczeń. Masz zupełnie nowy proces back-end i wszystko.

kgrittn
źródło
Dzięki kgrittn za cenne wskazówki. Czy możesz mi powiedzieć, jak mogę nawiązać nowe połączenie z bazą danych i zamknąć poprzednie za pomocą zapytania pgscript?
sam
Nie znam pgscript. Jeśli jest to język, w którym piszesz funkcje, odpowiedź jest taka, że ​​nie można tego zrobić. Może powinieneś rozważyć umieszczenie tabel w różnych schematach zamiast w różnych bazach danych ?
kgrittn
2
Zapytanie nie może zmienić bazy danych w PostgreSQL.
kgrittn
Dzięki kgrittn za wszelką pomoc .. :)
Sam
8
Jeśli się nie mylę, bazy danych w MySQL są bardziej podobne do schematów w PostgreSQL - możesz przełączać się między nimi, ale bazy danych w PostgreSQL to zupełnie inna gra.
mpen
213

Musisz określić bazę danych, która będzie używana podczas łączenia; jeśli chcesz użyć psql do skryptu, możesz użyć „\ c nazwa_bazy danych”

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

W tym momencie możesz zobaczyć następujące dane wyjściowe

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

Zauważ, jak zmienia się monit. Pozdrowienia, właśnie szukam tego, zbyt mało informacji na temat postgreSQL w porównaniu do MySQL i reszty moim zdaniem.

Eugene
źródło
25

W pgAdmin możesz także użyć

USTAW ścieżkę wyszukiwania DO_nazwy_db;

Bart De Boeck
źródło
Udało się dzięki
YouAreAwesome
9

Podstawowym problemem podczas migracji z MySQL było to, że myślałem, że termin ten databasejest taki sam również w PostgreSQL, ale tak nie jest. Więc jeśli zamierzamy przełączyć bazę danych z naszej aplikacji lub pgAdmin, wynik nie byłby zgodny z oczekiwaniami. Podobnie jak w moim przypadku, mamy osobne schematy (biorąc pod uwagę terminologię PostgreSQL tutaj.) Dla każdego klienta i osobny schemat administratora. Więc w aplikacji muszę przełączać się między schematami.

W tym celu możemy użyć SET search_pathpolecenia. Spowoduje to przełączenie bieżącego schematu na określoną nazwę schematu dla bieżącej sesji.

przykład:

SET search_path = different_schema_name;

Spowoduje to zmianę schematu prądu na określony schemat dla sesji. Aby to zmienić na stałe, musimy wprowadzić zmiany w postgresql.confpliku.

VPK
źródło
4

Użyj tego polecenia podczas pierwszego połączenia psql

=# psql <databaseName> <usernamePostgresql>
Sukma Saputra
źródło