postgresql
ESTENSIONE dblink e postgres_fdw
Ricerca…
Sintassi
dblink ('dbname = nome_db_distance port = PortOfDB host = HostOfDB utente = nomeutenteDB password = passwordDB', 'MY QUESRY')
dbname = nome del database
porta = Porta del database
host = host del database
utente = nome utente del database
password = password del database ',
MY QUESRY = questa può essere qualsiasi operazione che voglio fare SELECT, INSERT, ...
Extention dblink
dblink EXTENSION è una tecnica per connettere un altro database e fare il funzionamento di questo database in modo da fare ciò di cui hai bisogno:
1-Creare un'estensione del dblink:
CREATE EXTENSION dblink;
2-Fai la tua operazione:
Ad esempio Selezionare alcuni attributi da un'altra tabella in un altro database:
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);
Estensione FDW
FDW è un'implosione di dblink è più utile, quindi per usarlo:
1-Creare un'estensione:
CREATE EXTENSION postgres_fdw;
2-Crea SERVER:
CREATE SERVER name_srv FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'hostname',
dbname 'bd_name', port '5432');
3-Crea mappatura utente per server postgres
CREATE USER MAPPING FOR postgres SERVER name_srv OPTIONS(user 'postgres', password 'password');
4-Crea tabella esterna:
CREATE FOREIGN TABLE table_foreign (id INTEGER, code character varying)
SERVER name_srv OPTIONS(schema_name 'schema', table_name 'table');
5-usa questa tabella straniera come se fosse nel tuo database:
SELECT * FROM table_foreign;
Wrapper di dati stranieri
Per accedere allo schema completo del server db invece della singola tabella. Segui i passaggi seguenti:
- Crea ESTENSIONE:
CREATE EXTENSION postgres_fdw;
- Crea SERVER:
CREATE SERVER server_name FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'host_ip', dbname 'db_name', port 'port_number');
- Crea MAPPING UTENTE:
CREATE USER MAPPING FOR CURRENT_USER SERVER server_name OPTIONS (user 'user_name', password 'password');
- Crea un nuovo schema per accedere allo schema del DB del server:
CREATE SCHEMA schema_name;
- Importa schema server:
IMPORT FOREIGN SCHEMA schema_name_to_import_from_remote_db FROM SERVER server_name INTO schema_name;
- Accedi a qualsiasi tabella dello schema del server:
SELECT * FROM schema_name.table_name;
Questo può essere usato per accedere a più schemi del DB remoto.