Elencare e cambiare database in PostgreSQL
Elencare e cambiare database in PostgreSQL
PostgreSQL, un potente sistema di database relazionale a oggetti open-source, offre una ricca serie di strumenti e funzioni per gestire i database in modo efficiente. Sia che siate un amministratore di database o uno sviluppatore backend, sapere come elencare e passare da un database all’altro è fondamentale per navigare in ambienti multi-database.
1. Prerequisiti
Prima di iniziare, assicuratevi che:
PostgreSQL sia installato sul vostro sistema(psql è accessibile).
Si disponga dei permessi appropriati (ad esempio, superutente o ruolo con diritti di connessione).
Ci si possa autenticare con il server PostgreSQL utilizzando un utente valido.
2. Elencare i database in PostgreSQL
🔍 Metodo 1: Utilizzo del metacomando psql
Avviare il terminale interattivo psql ed eseguire:
\lOppure la forma estesa:
\listQuesto restituisce un elenco di tutti i database:
Name
Owner
Encoding
Collation
Ctype
Access privileges
Metodo 2: Utilizzo di una query SQL
In alternativa, eseguire questa istruzione SQL:
SELECT datname FROM pg_database WHERE datistemplate = false;Questa query esclude i database modello (template0, template1) e mostra i database creati dall’utente.
🛠️ Metodo 3: Shell a riga di comando
Al di fuori di psql, dal terminale:
psql -U postgres -c "\l"Si può anche usare psql -l:
psql -l3. Cambiare database
A differenza di altri RDBMS (ad esempio, MySQL), PostgreSQL non supporta il cambio di database all’interno della stessa sessione utilizzando un comando come USE dbname;.
Perché?
PostgreSQL stabilisce una connessione a un database specifico al momento del login. Per accedere a un altro database, è necessario disconnettersi e riconnettersi.
Approccio consigliato:
Uscire dalla sessione corrente e riconnettersi al database desiderato:
\q -- Esci dalla sessione psql correnteQuindi:
psql -U username -d target_databaseOppure direttamente:
psql -U username -d target_database -h hostname -p portEsempio:
psql -U admin -d salesdb4. Suggerimenti per un flusso di lavoro efficiente su più database
a. Utilizzare .pgpass per la commutazione senza password
Creare un file .pgpass per automatizzare l’autenticazione:
hostname:port:database:username:passwordAssicurarsi che abbia i permessi corretti:
chmod 600 ~/.pgpassb. Automatizzare con gli script di shell
Creare uno script che elenchi e commuti:
#!/bin/bash
echo "Available Databases:"
psql -U postgres -c "\l"
read -p "Enter target DB: " db
psql -U postgres -d "$db"c. Utilizzare le variabili d’ambiente
Esportare il DB e l’utente predefiniti per un passaggio più rapido:


