Listarea și comutarea bazelor de date în PostgreSQL

PostgreSQL, un puternic sistem open-source de baze de date obiect-relaționale, oferă un set bogat de instrumente și caracteristici pentru gestionarea eficientă a bazelor de date. Fie că sunteți administrator de baze de date sau dezvoltator backend, cunoașterea modului de a lista și de a comuta între baze de date este esențială pentru navigarea în medii cu mai multe baze de date.

1. Condiții prealabile

Înainte de a începe, asigurați-vă că:

  • PostgreSQL este instalat pe sistemul dumneavoastră(psql este accesibil).

  • Aveți permisiunile corespunzătoare (de exemplu, superutilizator sau rol cu drepturi de conectare).

  • Vă puteți autentifica cu serverul PostgreSQL utilizând un utilizator valid.

2. Listarea bazelor de date în PostgreSQL

🔍 Metoda 1: Utilizarea metacomandă psql

Lansați terminalul interactiv psql și rulați:

\l

Sau forma extinsă:

\list

Aceasta va returna o listă a tuturor bazelor de date:

  • Name

  • Owner

  • Encoding

  • Collation

  • Ctype

  • Access privileges

Metoda 2: Utilizarea interogării SQL

Alternativ, executați această instrucțiune SQL:

SELECT datname FROM pg_database WHERE datistemplate = false;

Această interogare exclude bazele de date șablon (template0, template1) și arată bazele de date create de utilizator.

🛠️ Metoda 3: Command-Line Shell

În afara psql, din terminalul dvs:

psql -U postgres -c "\l"

De asemenea, puteți utiliza psql -l:

psql -l

3. Schimbarea bazelor de date

Spre deosebire de alte RDBMS (de exemplu, MySQL), PostgreSQL nu acceptă schimbarea bazelor de date în cadrul aceleiași sesiuni folosind o comandă precum USE dbname;.

De ce?

PostgreSQL stabilește o conexiune la o anumită bază de date la momentul conectării. Pentru a accesa o altă bază de date, trebuie să vă deconectați și să vă reconectați.

Abordare recomandată:

Ieșiți din sesiunea curentă și reconectați-vă la baza de date dorită:

\q -- Ieșiți din sesiunea curentă psql

Apoi:

psql -U username -d target_database

Sau direct:

psql -U username -d target_database -h hostname -p port

Exemplu:

psql -U admin -d salesdb

4. Sfaturi pentru un flux de lucru eficient cu mai multe baze de date

a. Utilizați .pgpass pentru comutarea fără parolă

Creați un fișier .pgpass pentru a automatiza autentificarea:

hostname:port:database:username:password

Asigurați-vă că fișierul are permisiunile corecte:

chmod 600 ~/.pgpass

b. Automatizare cu scripturi Shell

Creați un script pentru a lista și comuta:

#!/bin/bash
echo "Available Databases:"
psql -U postgres -c "\l"
read -p "Enter target DB: " db
psql -U postgres -d "$db"

c. Utilizați variabilele de mediu

Exportați DB-ul și utilizatorul implicit pentru o comutare mai rapidă:

export PGDATABASE=mydb
export PGUSER=myuser
psql

5. Lucrul cu PgAdmin și alte interfețe grafice

În PgAdmin:

  1. Faceți clic pe grupul de servere.

  2. Faceți clic dreapta → Conectare la o bază de date.

  3. Utilizați dropdown-ul Query Tool pentru a schimba bazele de date (creează un nou tab pentru fiecare DB).

Multe instrumente (DBeaver, DataGrip) permit conexiuni multiple cu vizualizări cu file ale bazei de date.

6. Bonus: Verificați baza de date curentă

În cadrul psql, găsiți baza de date curentă:

SELECT current_database();

Sau utilizați:

\conninfo

Concluzie

Deși PostgreSQL nu permite comutarea bazei de date în sesiune, precum alte motoare SQL, modelul său robust de conectare asigură un control al accesului și o gestionare a resurselor curate și coerente. Prin stăpânirea tehnicilor de listare și adoptarea unor practici inteligente de reconectare, puteți gestiona și comuta eficient între bazele de date PostgreSQL în orice mediu – fie prin CLI, GUI sau scripturi.