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