postgresql
ROZSZERZENIE dblink i postgres_fdw
Szukaj…
Składnia
dblink („dbname = nazwa_db_distance port = host PortOfDB = użytkownik HostOfDB = nazwa użytkownikaDB hasło = hasłoDB”, „MY QUESRY”)
nazwa_bazy = nazwa bazy danych
port = port bazy danych
host = host bazy danych
użytkownik = nazwa użytkownika bazy danych
hasło = hasło do bazy danych ”,
MOJE ZAPYTANIE = może to być dowolna operacja, którą chcę wykonać WYBIERZ, WSTAW, ...
Rozszerzenie dblink
dblink EXTENSION to technika łączenia innej bazy danych i wykonywania operacji na tej bazie danych, aby zrobić to, czego potrzebujesz:
1-Utwórz rozszerzenie dblink:
CREATE EXTENSION dblink;
2-Wykonaj operację:
Na przykład wybierz jakiś atrybut z innej tabeli w innej bazie danych:
SELECT * FROM
dblink ('dbname = bd_distance port = 5432 host = 10.6.6.6 user = username
password = passw@rd', 'SELECT id, code FROM schema.table')
AS newTable(id INTEGER, code character varying);
Rozszerzenie FDW
FDW jest wcieleniem dblink, jest bardziej pomocne, więc użyj go:
1-Utwórz rozszerzenie:
CREATE EXTENSION postgres_fdw;
2-Utwórz SERWER:
CREATE SERVER name_srv FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'hostname',
dbname 'bd_name', port '5432');
3-Utwórz mapowanie użytkowników dla serwera Postgres
CREATE USER MAPPING FOR postgres SERVER name_srv OPTIONS(user 'postgres', password 'password');
4-Utwórz tabelę zagraniczną:
CREATE FOREIGN TABLE table_foreign (id INTEGER, code character varying)
SERVER name_srv OPTIONS(schema_name 'schema', table_name 'table');
5-użyj tej obcej tabeli, tak jak w bazie danych:
SELECT * FROM table_foreign;
Opakowanie danych zagranicznych
Aby uzyskać dostęp do pełnego schematu bazy danych serwera zamiast pojedynczej tabeli. Wykonaj poniższe kroki:
- Utwórz PRZEDŁUŻENIE:
CREATE EXTENSION postgres_fdw;
- Utwórz SERWER:
CREATE SERVER server_name FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'host_ip', dbname 'db_name', port 'port_number');
- Utwórz MAPOWANIE UŻYTKOWNIKA:
CREATE USER MAPPING FOR CURRENT_USER SERVER server_name OPTIONS (user 'user_name', password 'password');
- Utwórz nowy schemat, aby uzyskać dostęp do schematu bazy danych serwera:
CREATE SCHEMA schema_name;
- Importuj schemat serwera:
IMPORT FOREIGN SCHEMA schema_name_to_import_from_remote_db FROM SERVER server_name INTO schema_name;
- Uzyskaj dostęp do dowolnej tabeli schematu serwera:
SELECT * FROM schema_name.table_name;
Można to wykorzystać do uzyskania dostępu do wielu schematów zdalnej bazy danych.