1- O que é uma Foreign Table?
São tabelas estrangeiras importadas de outros banco de dados.
2- O que será necessário?
postgres_fdw é um módulo que permite ao FOREIGN DATA WRAPPER, que pode ser usado para acessar dados armazenados em um servidor PostgreSQL externo.
Existem outras extensões como mysql_fdw e oracle_fdw em outro artigo falarei mais sobre isso!
O comando para instalar o postgres_fdw é o seguinte:
CREATE EXTENSION postgres_fdw;
Cria uma definição de servidor estrangeiro! "foreign server" onde define-se alguns dados de conexão como, host, dbname, port, ...
O comando para criar um servidor é o seguinte:
CREATE SERVER nome_servidor FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '127.0.0.1', dbname 'database', port '5432');
Onde:
USER MAPPING ou mapeamento de usuário serve para armazenar de forma segura dados de acesso ao servidor estrangeiro, como nome de usuário e senha. A partir da versão 13 do postgres é possível utilizar SSL para não super usuários nesse mapeamento.
No futuro escrevo um artigo de como conectar-se através de SSL.
O comando para criar o mapeamento de usuário é o seguinte:
CREATE USER MAPPING FOR user SERVER nome_servidor OPTIONS(user 'foreign_user', password 'pass');
Onde:
Define uma tabela onde os dados estão em outro servidor. A estrutura da tabela não é atualizada automaticamente.
É necessário que seja alterada na foreign table seguindo a estrutura da tabela original.
Se der update/insert/delete numa foreign table os dados serão atualizados, inseridos ou deletados na origem, ou seja no servidor externo. Devendo sempre tomar muito cuidado com isso. Em casos onde não preciso manipular os dados eu deixo permissão somente para select usando GRANT e REVOKE.
Exemplo:
CREATE FOREIGN TABLE tabela1(
id BIGINT NOT NULL,
titulo VARCHAR(50) NOT NULL
) SERVER nome_servidor
OPTIONS(schema_name 'public', table_name 'tabela_alvo');
Onde:
O nome das colunas devem ser iguais ao das colunas alvo.
Exemplo usando uma view:
CREATE FOREIGN TABLE tabela1(
id BIGINT NOT NULL,
titulo VARCHAR(50) NOT NULL
) SERVER nome_servidor
OPTIONS(schema_name 'public', table_name 'view_alvo');
Importa o schema completo de um banco de dados estrangeiro.
Exemplo importando esquema inteiro:
IMPORT FOREIGN SCHEMA esquema_estrangeiro FROM SERVER nome_servidor INTO esquema_local;
Onde:
Exemplo importando esquema especificando as tabelas:
IMPORT FOREIGN SCHEMA esquema_estrangeiro LIMIT TO (tabela1, tabela2) FROM SERVER nome_servidor INTO esquema_local;
Onde:
Espero poder trazer mais dicas!
Deixem nos comentários sugestões do que posso falar, as vezes demoro pra trazer conteúdo justamente por não saber exatamente o que trazer para vocês.
Até a próxima dica!
xlifyqflf
30/06/2023 05:09PostgreSQL - Foreign Table <a href="http://www.g179cuxpr4sdvm0b7455qg6q03o379k2s.org/">axlifyqflf</a> [url=http://www.g179cuxpr4sdvm0b7455qg6q03o379k2s.org/]uxlifyqflf[/url] xlifyqflf http://www.g179cuxpr4sdvm0b7455qg6q03o379k2s.org/
xtiivlekzq
08/07/2023 23:56PostgreSQL - Foreign Table [url=http://www.g27j5bd56952k0m6t9jn46e7vxq03vxds.org/]uxtiivlekzq[/url] <a href="http://www.g27j5bd56952k0m6t9jn46e7vxq03vxds.org/">axtiivlekzq</a> xtiivlekzq http://www.g27j5bd56952k0m6t9jn46e7vxq03vxds.org/
jmlstrcx
24/07/2023 03:04PostgreSQL - Foreign Table jmlstrcx http://www.gl57o9m2p2vom93dgo66tyn7967v825ss.org/ [url=http://www.gl57o9m2p2vom93dgo66tyn7967v825ss.org/]ujmlstrcx[/url] <a href="http://www.gl57o9m2p2vom93dgo66tyn7967v825ss.org/">ajmlstrcx</a>
wfpqbskgix
27/07/2023 18:24PostgreSQL - Foreign Table [url=http://www.grk1tph70g0h33755a3udoj2m8246a0cs.org/]uwfpqbskgix[/url] <a href="http://www.grk1tph70g0h33755a3udoj2m8246a0cs.org/">awfpqbskgix</a> wfpqbskgix http://www.grk1tph70g0h33755a3udoj2m8246a0cs.org/
jowhlsnmo
30/07/2023 02:45PostgreSQL - Foreign Table <a href="http://www.gwvd3j5s773223c15f014efot19hdn1bs.org/">ajowhlsnmo</a> jowhlsnmo http://www.gwvd3j5s773223c15f014efot19hdn1bs.org/ [url=http://www.gwvd3j5s773223c15f014efot19hdn1bs.org/]ujowhlsnmo[/url]
drehfne
02/08/2023 19:00PostgreSQL - Foreign Table <a href="http://www.g7td9vr589jv4a9630w9pgf619h32yhqs.org/">adrehfne</a> [url=http://www.g7td9vr589jv4a9630w9pgf619h32yhqs.org/]udrehfne[/url] drehfne http://www.g7td9vr589jv4a9630w9pgf619h32yhqs.org/
iycsfxvoze
10/08/2023 09:04PostgreSQL - Foreign Table [url=http://www.grbvz0kd665d2587zg5qhs1rr90i2440s.org/]uiycsfxvoze[/url] <a href="http://www.grbvz0kd665d2587zg5qhs1rr90i2440s.org/">aiycsfxvoze</a> iycsfxvoze http://www.grbvz0kd665d2587zg5qhs1rr90i2440s.org/
rrcjdbjj
26/09/2023 00:21PostgreSQL - Foreign Table [url=http://www.gqfe73c7b8w434deoh6511swjec61151s.org/]urrcjdbjj[/url] <a href="http://www.gqfe73c7b8w434deoh6511swjec61151s.org/">arrcjdbjj</a> rrcjdbjj http://www.gqfe73c7b8w434deoh6511swjec61151s.org/
Terrybuima
09/10/2023 05:19Изготовление номерных знаков на авто <a href=https://avto-dublikat.ru/>Дубликат номера</a>
pvmhrtgfc
23/01/2024 02:23PostgreSQL - Foreign Table [url=http://www.gk4v821qg0a1p021333qr7j5jwf07mxjs.org/]upvmhrtgfc[/url] <a href="http://www.gk4v821qg0a1p021333qr7j5jwf07mxjs.org/">apvmhrtgfc</a> pvmhrtgfc http://www.gk4v821qg0a1p021333qr7j5jwf07mxjs.org/
qnitiyplt
22/03/2024 12:40PostgreSQL - Foreign Table [url=http://www.g460lv1fa74ml2hb0ivb5772zus19u65s.org/]uqnitiyplt[/url] qnitiyplt http://www.g460lv1fa74ml2hb0ivb5772zus19u65s.org/ <a href="http://www.g460lv1fa74ml2hb0ivb5772zus19u65s.org/">aqnitiyplt</a>
rovdnnwkqn
14/08/2024 05:06PostgreSQL - Foreign Table rovdnnwkqn http://www.g341u176ma6h255z9a03rrcekye0q39as.org/ [url=http://www.g341u176ma6h255z9a03rrcekye0q39as.org/]urovdnnwkqn[/url] <a href="http://www.g341u176ma6h255z9a03rrcekye0q39as.org/">arovdnnwkqn</a>