Wyświetlanie i przełączanie baz danych w PostgreSQL

PostgreSQL, potężny system zarządzania bazami danych typu open-source, oferuje bogaty zestaw narzędzi i funkcji do efektywnego zarządzania bazami danych. Niezależnie od tego, czy jesteś administratorem baz danych, czy programistą backendowym, znajomość sposobu wyświetlania i przełączania między bazami danych jest podstawą w nawigacji w środowiskach wielobazowych.

1. Wymagania wstępne

Zanim zaczniesz, upewnij się, że:

  • PostgreSQL jest zainstalowany na twoim systemie (psql jest dostępny).

  • Masz odpowiednie uprawnienia (np. superużytkownik lub rola z prawami do połączenia).

  • Możesz uwierzytelnić się w serwerze PostgreSQL za pomocą ważnego użytkownika.

2. Wyświetlanie baz danych w PostgreSQL

🔍 Metoda 1: Użycie metakomendy psql

Uruchom interaktywny terminal psql i uruchom:

l

Lub rozszerzoną formę:

list

To zwróci listę wszystkich baz danych:

  • Nazwa

  • Właściciel

  • Kodowanie

  • Porządek sortowania

  • Ctype

  • Uprawnienia dostępu

 Metoda 2: Użycie zapytania SQL

Alternatywnie, uruchom to zapytanie SQL:

SELECT datname FROM pg_database WHERE datistemplate = false;

To zapytanie wyklucza bazy danych szablonów (template0, template1) i pokazuje bazy danych utworzone przez użytkowników.

🛠️ Metoda 3: Powłoka wiersza poleceń

Poza psql, z terminala:

psql -U postgres -c "l"

Możesz również użyć psql -l:

psql -l

3. Przełączanie baz danych

W przeciwieństwie do niektórych innych RDBMS (np. MySQL), PostgreSQL nie obsługuje przełączania baz danych w tej samej sesji za pomocą polecenia takiego jak USE dbname;.

 Dlaczego?

PostgreSQL nawiązuje połączenie z określoną bazą danych w momencie logowania. Aby uzyskać dostęp do innej bazy danych, musisz rozłączyć się i ponownie połączyć.

 Zalecane podejście:

Wyjdź z bieżącej sesji i połącz się z pożądaną bazą danych:

q -- Quit current psql session

Następnie:

psql -U username -d target_database

Lub bezpośrednio:

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

Przykład:

psql -U admin -d salesdb

4. Wskazówki dotyczące efektywnego przepływu pracy w wielobazowym środowisku

a. Użyj .pgpass do przełączania bez hasła

Utwórz plik .pgpass, aby zautomatyzować uwierzytelnianie:

hostname:port:database:username:password

Upewnij się, że ma odpowiednie uprawnienia:

chmod 600 ~/.pgpass

 b. Automatyzuj za pomocą skryptów powłoki

Utwórz skrypt do wyświetlania i przełączania:

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

 c. Użyj zmiennych środowiskowych

Eksportuj domyślną bazę danych i użytkownika dla szybszego przełączania:

export PGDATABASE=mydb
export PGUSER=myuser
psql

5. Praca z PgAdmin i innymi interfejsami graficznymi

W PgAdmin:

  1. Kliknij na grupę serwerów.

  2. Kliknij prawym przyciskiem myszy → Połącz z bazą danych.

  3. Użyj rozwijanego menu Narzędzie zapytań, aby przełączać bazy danych (tworzy nową kartę dla każdej bazy danych).

Wiele narzędzi (DBeaver, DataGrip) pozwala na wiele połączeń z widokami baz danych w kartach.

6. Bonus: Sprawdź bieżącą bazę danych

W psql, znajdź swoją bieżącą bazę danych:

SELECT current_database();

Lub użyj:

conninfo

Podsumowanie

Chociaż PostgreSQL nie pozwala na przełączanie baz danych w sesji, jak niektóre inne silniki SQL, jego solidny model połączeń zapewnia czyste, spójne zarządzanie dostępem i zasobami. Opanowując techniki wyświetlania i przyjmując inteligentne praktyki ponownego łączenia, możesz efektywnie zarządzać i przełączać się między bazami danych PostgreSQL w każdym środowisku — czy to przez CLI, GUI, czy skrypty.