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, ...

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:

  1. Utwórz PRZEDŁUŻENIE:
    CREATE EXTENSION postgres_fdw;
  1. Utwórz SERWER:
    CREATE SERVER server_name FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'host_ip', 
    dbname 'db_name', port 'port_number');
  1. Utwórz MAPOWANIE UŻYTKOWNIKA:
    CREATE USER MAPPING FOR CURRENT_USER
    SERVER server_name
    OPTIONS (user 'user_name', password 'password');
  1. Utwórz nowy schemat, aby uzyskać dostęp do schematu bazy danych serwera:
   CREATE SCHEMA schema_name;
  1. Importuj schemat serwera:
     IMPORT FOREIGN SCHEMA schema_name_to_import_from_remote_db
     FROM SERVER server_name
     INTO schema_name;
  1. 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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow