Todos os produtos
Search
Central de documentação

AnalyticDB:Import and export data using an OSS foreign table

Última atualização: Jun 27, 2026

As tabelas externas do OSS permitem mover dados em massa entre o Object Storage Service (OSS) e o AnalyticDB for PostgreSQL, inclusive entre contas da Alibaba Cloud.

Limitações

A instância do AnalyticDB for PostgreSQL e o bucket do OSS devem estar na mesma região.

Formatos de objeto compatíveis

As tabelas externas do OSS são compatíveis com os seguintes formatos:

  • Objetos CSV e TEXT não compactados

  • Objetos CSV e TEXT compactados com GZIP

  • Objetos binários ORC

Para obter informações sobre o mapeamento de tipos de dados ORC, consulte a seção "Mapeamentos de tipos de dados entre ORC e AnalyticDB for PostgreSQL" em Mapeamentos de tipos de dados para tabelas externas do OSS.

Pré-requisitos

Antes de começar, verifique se você criou os seguintes objetos nesta ordem:

  1. Um servidor OSS: registra o bucket do OSS como source de dados Foreign Data Wrapper (FDW) no AnalyticDB for PostgreSQL. Consulte a seção "Criar um servidor OSS" em Usar tabelas externas do OSS para análise de data lake.

  2. Um mapeamento de usuário: associa um usuário do banco de dados às credenciais AccessKey que autorizam o acesso ao OSS. Consulte a seção "Criar um mapeamento de usuário para o servidor OSS" em Usar tabelas externas do OSS para análise de data lake.

  3. Uma tabela externa do OSS: define o esquema e a localização dos dados no OSS. Consulte a seção "Criar uma tabela externa do OSS" em Usar tabelas externas do OSS para análise de data lake.

Esses três objetos formam uma cadeia: o servidor identifica o bucket do OSS, o mapeamento de usuário fornece as credenciais de acesso e a tabela externa expõe os dados do OSS como uma tabela consultável.

Importar dados do OSS

Os passos a seguir apresentam um exemplo completo de importação de um arquivo CSV do OSS para uma tabela do AnalyticDB for PostgreSQL.

  1. Faça upload de um arquivo CSV para o OSS. Este exemplo utiliza um arquivo chamado example.csv. Para etapas de preparação, consulte a seção "Preparações" em Usar tabelas externas do OSS para análise de data lake. Para instruções de upload, consulte Fazer upload de objetos.

    Use o mesmo formato de codificação para os objetos no OSS e para o banco de dados a fim de evitar sobrecarga de conversão. A codificação padrão do banco de dados é UTF-8.
  2. Conecte-se a um banco de dados AnalyticDB for PostgreSQL. Consulte Conexão do cliente.

  3. Crie um servidor OSS.

    Parâmetro

    Descrição

    endpoint

    Endpoint interno do bucket do OSS. Apenas endpoints internos são compatíveis. Consulte a seção "Nuvem pública da Alibaba Cloud" em Regiões e endpoints.

    bucket

    Nome do bucket do OSS. O bucket deve estar na mesma região da instância do AnalyticDB for PostgreSQL.

    CREATE SERVER oss_serv
        FOREIGN DATA WRAPPER oss_fdw
        OPTIONS (
            endpoint 'oss-cn-********.aliyuncs.com',
            bucket 'adb-pg'
      );
  4. Crie um mapeamento de usuário.

    Para transferência de dados entre contas, use o AccessKey ID e o AccessKey secret da conta da Alibaba Cloud proprietária do bucket do OSS.
    CREATE USER MAPPING FOR PUBLIC
        SERVER oss_serv
        OPTIONS (
            id 'LTAI****************',
            key 'yourAccessKeySecret'
        );
  5. Crie uma tabela externa do OSS chamada ossexample.

    CREATE FOREIGN TABLE ossexample (
        date text,
        time text,
        open float,
        high float,
        low float,
        volume int
    ) SERVER oss_serv OPTIONS (dir 'oss_adb/', format 'csv');
  6. Importe os dados usando um dos métodos a seguir. Método 1: INSERT (recomendado para carregar em uma tabela existente) Crie uma tabela local com o mesmo esquema da tabela externa e insira os dados.

    CREATE TABLE adbexample (
        date text,
        time text,
        open float,
        high float,
        low float,
        volume int
    ) WITH (APPENDONLY=TRUE, ORIENTATION=COLUMN, COMPRESSTYPE=ZSTD, COMPRESSLEVEL=5);
    
    INSERT INTO adbexample SELECT * FROM ossexample;

    Método 2: CREATE TABLE AS (cria a tabela e carrega os dados em uma única etapa)

    CREATE TABLE adbexample AS SELECT * FROM ossexample DISTRIBUTED BY (volume);
    Todos os nós de computação leem objetos do OSS em paralelo por meio de um mecanismo de polling. Por padrão, quatro objetos são lidos simultaneamente. Para obter o melhor throughput, defina o número de objetos paralelos como um múltiplo do total de núcleos dos nós de computação (nós de computação × núcleos por nó). Consulte a seção "Dividir objetos grandes" em Melhores práticas para operações em tabelas externas do OSS .
    Se a importação falhar (por exemplo, devido a incompatibilidade de codificação de arquivo ou tipo de dados), verifique se o esquema da tabela externa corresponde à estrutura do objeto no OSS e se as configurações de codificação estão consistentes.

Exportar dados para o OSS

  1. Crie uma tabela externa do OSS que aponte para o diretório de saída.

    CREATE FOREIGN TABLE foreign_x (i int, j int)
    SERVER oss_serv
    OPTIONS (format 'csv', dir 'tt_csv/');
  2. Exporte os dados de uma tabela local para o OSS.

    INSERT INTO foreign_x SELECT * FROM local_x;
  3. Verifique a exportação acessando o diretório tt_csv/ no bucket do OSS. Cada nó de computação grava objetos em paralelo; portanto, vários arquivos estarão visíveis (um ou mais por segmento).

Convenção de nomenclatura para objetos exportados

Os objetos exportados seguem este formato de nomenclatura:

{tablename | prefix}_{timestamp}_{random_key}_{seg}{segment_id}_{fileno}.{ext}[.gz]

Componente

Descrição

`{tablename

prefix}`

Se prefix for especificado, o valor de prefix será usado. Caso dir seja definido, o nome da tabela externa do OSS será utilizado.

{timestamp}

Horário de início da exportação, no formato YYYYMMDDHH24MISS.

{random_key}

Valor de chave aleatória.

{seg}{segment_id}

Identificador do segmento. Por exemplo, seg1 para o nó de computação 1.

{fileno}

Número do segmento do objeto, começando em 0.

{ext}

Formato do objeto: .csv, .txt ou .orc.

[.gz]

Presente quando o objeto estiver compactado com GZIP.

Exemplo: exportação para um objeto CSV compactado com GZIP usando o parâmetro dir

CREATE FOREIGN TABLE fdw_t_out_1(a int)
SERVER oss_serv
OPTIONS (format 'csv', filetype 'gzip', dir 'test/');

Os objetos exportados recebem nomes neste formato:

fdw_t_out_1_20200805110207_1718599661_seg-1_0.csv.gz

Exemplo: exportação para um objeto ORC usando o parâmetro prefix

CREATE FOREIGN TABLE fdw_t_out_2(a int)
SERVER oss_serv
OPTIONS (format 'orc', prefix 'test/my_orc_test');

Os objetos exportados recebem nomes neste formato:

my_orc_test_20200924153043_1737154096_seg0_0.orc

Próximos passos