Foreign Data Wrapper w PostgreSQL pozwala na dostęp do danych z innych baz danych PostgreSQL tak, jakby były one częścią lokalnego serwera. Oto ogólny przewodnik po konfiguracji:
1. Instalacja rozszerzenia:
Jeśli rozszerzenie postgres_fdw
nie jest jeszcze zainstalowane, zainstaluj je w bazie danych, w której chcesz mieć dostęp do danych zdalnych:
CREATE EXTENSION postgres_fdw;
SQL2. Utworzenie serwera obcego:
Serwer obcy reprezentuje zdalną bazę danych PostgreSQL. Musisz podać informacje o połączeniu.
CREATE SERVER moj_serwer_zdalny
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'adres_hosta_zdalnego', port '5432', dbname 'nazwa_bazy_zdalnej');
SQLmoj_serwer_zdalny
: Nazwa, którą nadasz serwerowi.adres_hosta_zdalnego
: Adres IP lub nazwa hosta zdalnej bazy danych.5432
: Port, na którym nasłuchuje zdalna baza danych (domyślnie 5432).nazwa_bazy_zdalnej
: Nazwa bazy danych na serwerze zdalnym.
3. Utworzenie mapowania użytkownika:
Mapowanie użytkownika łączy lokalnego użytkownika z użytkownikiem na zdalnym serwerze. To pozwala na uwierzytelnienie.
CREATE USER MAPPING FOR uzytkownik_lokalny
SERVER moj_serwer_zdalny
OPTIONS (user 'uzytkownik_zdalny', password 'haslo_uzytkownika_zdalnego');
SQL- uzytkownik_lokalny: Nazwa użytkownika w lokalnej bazie danych.
- uzytkownik_zdalny: Nazwa użytkownika w zdalnej bazie danych.
- haslo_uzytkownika_zdalnego: Hasło użytkownika w zdalnej bazie danych.
WAŻNE: Zaleca się używanie bezpieczniejszych metod uwierzytelniania, takich jak pliki .pgpass
, zamiast przechowywać hasło bezpośrednio w definicji mapowania użytkownika. Plik .pgpass
pozwala na przechowywanie haseł w bezpieczny sposób.
4. Używanie tabeli obcej:
Tabela obca definiuje, które tabele z zdalnej bazy danych chcesz udostępnić lokalnie.
CREATE FOREIGN TABLE moja_tabela_zdalna (
id integer,
nazwa text,
data date
)
SERVER moj_serwer_zdalny
OPTIONS (schema 'public', table 'nazwa_tabeli_w_bazie_zdalnej');
SQL- moja_tabela_zdalna: Nazwa, którą nadasz tabeli lokalnie.
- id integer, nazwa text, data date: Definicja kolumn tabeli (musi odpowiadać kolumnom w zdalnej tabeli).
- schema 'public’: Nazwa schematu w zdalnej bazie danych (często 'public’).
- nazwa_tabeli_w_bazie_zdalnej: Nazwa tabeli w zdalnej bazie danych.
5. Używanie tabeli obcej:
Po utworzeniu tabeli obcej, możesz jej używać tak, jakby była lokalna:
SELECT * FROM moja_tabela_zdalna;
SQLPrzykład z .pgpass:
1. Utwórz plik .pgpass
w katalogu domowym użytkownika (np. ~/.pgpass
na Linux/macOS, %APPDATA%\postgresql\pgpass.conf
na Windows).
2. Dodaj linię w formacie: hostname:port:database:username:password
3. Ustaw odpowiednie uprawnienia do pliku (np. chmod 0600 ~/.pgpass
na Linux/macOS).
4. W definicji USER MAPPING
pomiń opcję password
:
CREATE USER MAPPING FOR uzytkownik_lokalny
SERVER moj_serwer_zdalny
OPTIONS (user 'uzytkownik_zdalny');
SQL