Comando "usa database_name" in PostgreSQL


366

Sono alle prime armi con PostgreSQL.

Voglio collegarmi a un altro database dall'editor di query di Postgres, come il USEcomando di MySQL o MS SQL Server.

Ho trovato \c databasenamecercando in Internet, ma funziona solo su psql . Quando lo provo dall'editor di query PostgreSQL ricevo un errore di sintassi.

Devo cambiare il database tramite pgscripting. Qualcuno sa come farlo?



Un'altra opzione è quella di connettersi direttamente allo schema. Esempio: sudo -u postgres psql -d my_database_name. Fonte
AlikElzin-Kilaka,

Risposte:


382

Quando si ottiene una connessione ad PostgreSQLesso è sempre a un determinato database. Per accedere a un database diverso, è necessario ottenere una nuova connessione.

L'uso \cin psql chiude la vecchia connessione e ne acquisisce una nuova, utilizzando il database e / o le credenziali specificati. Ottieni un processo back-end completamente nuovo e tutto il resto.


Grazie kgrittn per la tua preziosa guida. Puoi dirmi come posso fare una nuova connessione al database e chiudere il precedente usando la query pgscript?
sam

Non ho familiarità con pgscript. Se è una lingua in cui scrivi le funzioni, la risposta è che non può essere fatto. Forse dovresti considerare di inserire tabelle in schemi diversi anziché in database diversi ?
kgrittn,

2
Una query non può cambiare il database in PostgreSQL.
kgrittn,

Grazie kgrittn per tutto il tuo aiuto .. :)
sam

8
Se non sbaglio, i database in MySQL sono più simili agli schemi di PostgreSQL: puoi passare da uno all'altro, ma i DB in PostgreSQL sono un gioco di ruolo completamente diverso.
mpen

213

È necessario specificare il database da utilizzare su connect; se vuoi usare psql per il tuo script, puoi usare "\ c name_database"

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

A questo punto potresti vedere il seguente output

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

Notare come cambia la richiesta. Saluti, ho appena cercato di cercare anche questo, troppe poche informazioni su PostgreSQL rispetto a MySQL e il resto a mio avviso.



9

Il problema di base durante la migrazione da MySQL che ho affrontato era, ho pensato che il termine databasefosse lo stesso anche in PostgreSQL, ma non lo è. Quindi, se stiamo per cambiare il database dalla nostra applicazione o pgAdmin, il risultato non sarebbe come previsto. Come nel mio caso, abbiamo schemi separati (Considerando la terminologia PostgreSQL qui.) Per ogni cliente e schema amministrativo separato. Quindi in applicazione, devo passare da uno schema all'altro.

Per questo, possiamo usare il SET search_pathcomando. Questo fa passare lo schema corrente al nome dello schema specificato per la sessione corrente.

esempio:

SET search_path = different_schema_name;

Ciò modifica current_schema nello schema specificato per la sessione. Per modificarlo in modo permanente, dobbiamo apportare modifiche al postgresql.conffile.


4

Utilizzare questo comando alla prima connessione psql

=# psql <databaseName> <usernamePostgresql>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.