Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Quick start for FDW references

Última atualização: Jul 05, 2026

Um foreign data wrapper (FDW) é uma extensão do PostgreSQL que permite consultar dados de fontes externas como se fossem tabelas locais. No GanosBase, a extensão FDW adiciona suporte a dados espaciais e mapeia automaticamente tipos de dados espaciais geométricos para o tipo Geometry. Assim, você executa consultas espaciais em tabelas estrangeiras e locais na mesma instrução.

Este guia demonstra como registrar um shapefile do OSS como tabela estrangeira e consultá-lo no cluster PolarDB for PostgreSQL.

Como funciona

O FDW do GanosBase utiliza um modelo de três camadas:

  1. Extensão: instale a funcionalidade FDW no banco de dados (ganos_fdw, além das dependências ganos_spatialref e ganos_geometry).

  2. Servidor estrangeiro: objeto de conexão nomeado que aponta para a fonte de dados externa (neste caso, o bucket do Object Storage Service (OSS)).

  3. Tabela estrangeira: tabela virtual mapeada para um arquivo ou conjunto de dados específico no servidor estrangeiro. Ela não possui armazenamento local, mas comporta-se como uma tabela comum nas consultas.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster PolarDB for PostgreSQL com o GanosBase em execução.

  • Um bucket do OSS contendo um shapefile com pelo menos três arquivos — .shp, .shx e .dbf — carregados na mesma pasta.

  • O bucket do OSS e o cluster PolarDB na mesma região, conectados via endpoint interno.

  • Um par de AccessKey (AccessKey ID e AccessKey secret) com acesso de leitura ao bucket do OSS. Para obter um par de AccessKey, consulte Obter um par de AccessKey.

Configurar e consultar uma tabela estrangeira

Etapa 1: Instale a extensão Ganos_FDW

Escolha um dos métodos a seguir.

Método 1 (recomendado): Instalação com CASCADE

A opção CASCADE instala automaticamente as dependências necessárias (ganos_spatialref e ganos_geometry):

CREATE EXTENSION ganos_fdw WITH schema public CASCADE;
Instale a extensão no schema public para evitar problemas de permissão.

Método 2: Instalação manual das dependências

Para controlar a ordem de instalação, execute os três comandos em sequência:

CREATE EXTENSION ganos_spatialref;
CREATE EXTENSION ganos_geometry;
CREATE EXTENSION ganos_fdw;

Etapa 2: Registrar um shapefile como tabela estrangeira

2a. Registrar o shapefile

Use ST_RegForeignTables para registrar o shapefile do OSS como tabela estrangeira. Substitua os espaços reservados pelos valores reais:

SELECT ST_RegForeignTables('OSS://<access_id>:<secret_key>@[<endpoint>]/<bucket>/path/to/file');

Espaço reservado

Descrição

<access_id>

Seu AccessKey ID

<secret_key>

Seu AccessKey secret

<endpoint>

Endpoint interno do OSS para sua região. Para formatos de endpoint, consulte Nomes de domínio do OSS

<bucket>/path/to/file

Caminho para o diretório do shapefile no bucket do OSS

Use o endpoint interno do OSS para garantir a conectividade entre o cluster PolarDB e o bucket do OSS. Ambos devem estar na mesma região.

2b. Verifique o registro da tabela estrangeira

Consulte a view information_schema.foreign_tables para confirmar o registro:

SELECT foreign_table_name FROM information_schema.foreign_tables ORDER BY foreign_table_name ASC;

Etapa 3: Consultar a tabela estrangeira

Execute uma consulta espacial na tabela estrangeira. O exemplo a seguir recupera a geometria e os atributos de um registro específico:

SELECT fid, ST_AsText(geom), name, age, height FROM poly WHERE fid = 1;

Saída esperada:

 fid  | ST_AsText(geom)                  | name      | age | height
------+----------------------------------+-----------+-----+--------
    1 | POLYGON((5 0,0 0,0 10,5 10,5 0)) | ZhangShan |  35 |   1.84

Etapa 4: Importar os dados da tabela estrangeira para uma tabela local

Selecione o método adequado ao seu cenário.

Se não houver tabela local

Crie uma tabela local e popule-a com dados da tabela estrangeira em uma única etapa:

CREATE TABLE poly_db AS SELECT * FROM poly;

Se já existir uma tabela local

Escolha um dos métodos a seguir para importar os dados:

  • INSERT INTO ... SELECT: anexa linhas da tabela estrangeira à tabela local existente.

    INSERT INTO poly_db SELECT * FROM poly;
  • IMPORT FOREIGN SCHEMA: importa todo o schema estrangeiro para um schema local.

    CREATE SCHEMA imp;
    
    IMPORT FOREIGN SCHEMA ganos_fdw
      FROM SERVER ganos_fdw_server
      INTO imp;

Etapa 5 (Opcional): Remover a extensão

Para desinstalar o Ganos_FDW e remover todos os objetos dependentes, execute:

DROP EXTENSION Ganos_FDW CASCADE;
Aviso

A opção CASCADE remove todas as tabelas estrangeiras e outros objetos dependentes da extensão. Certifique-se de que esses recursos não são mais necessários antes de executar este comando.