Todos os produtos
Search
Central de documentação

ApsaraDB for ClickHouse:Acesse dados do OSS com uma tabela externa

Última atualização: Jul 20, 2026

O ApsaraDB for ClickHouse permite consultar dados no Alibaba Cloud Object Storage Service (OSS) e exportar dados do ClickHouse para o OSS.

Pré-requisitos

Pré-requisitos

  1. Crie um bucket do OSS. Para mais informações, consulte Create buckets in the console.

    Importante

    O bucket do OSS deve estar na mesma região do seu cluster ApsaraDB for ClickHouse.

    Este exemplo utiliza um bucket chamado ck-test-oss.

  2. Carregue um objeto no OSS.

    Este exemplo usa o objeto test.csv. Carregue esse objeto no OSS. Para mais informações, consulte Upload objects.

    Se utilizar seu próprio objeto, garanta que o formato seja compatível com o ApsaraDB for ClickHouse. O ApsaraDB for ClickHouse oferece suporte a todos os formatos, exceto Protobuf e CapnProto. Para mais informações, consulte Formatos de arquivo suportados pelo ClickHouse.

Consulte dados do OSS

Método 1: Tabela externa do OSS

Enterprise ou Community-compatible (22,8 ou posterior)

  1. Faça logon no banco de dados.

    1. Faça logon no console do ApsaraDB for ClickHouse.

    2. Na página Clusters, clique em aba Clusters of Community-compatible Edition ou Enterprise Edition Clusters e, em seguida, clique em ID do cluster desejado.

    3. Na página Cluster Information, clique em Log On to Database no canto superior direito.

    4. Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.

  2. Crie uma tabela externa do OSS.

    Uma tabela externa do OSS no ApsaraDB for ClickHouse permite consultar objetos armazenados no OSS diretamente, sem importar dados para o armazenamento local, possibilitando a separação entre armazenamento e computação.

    Sintaxe:

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Descrição

    Exemplo

    table_name

    Nome da tabela.

    oss_test_tb

    col_name1,col_name2

    Nomes das colunas.

    user_name

    col_type1,col_type2

    Tipos de dados das colunas.

    Importante

    O esquema da tabela externa do OSS deve ser consistente com os dados no OSS.

    String

    bucket-name

    Nome do bucket do OSS.

    ck-test-oss

    oss-endpoint

    Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints.

    Importante

    Certifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região.

    oss-cn-hangzhou-internal.aliyuncs.com

    file-name

    Nome do objeto no bucket do OSS.

    test.csv

    access-key-id

    AccessKey ID do usuário RAM para acessar dados do OSS.

    yourAccessKeyID

    access-key-secret

    AccessKey secret do usuário RAM para acessar dados do OSS.

    Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey.

    Importante

    Para reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura.

    yourAccessKeySecret

    file-format-name

    Formato do objeto.

    Importante

    O valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse.

    CSV

    Exemplo:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')
  3. Consulte dados do OSS.

    SELECT * FROM oss_test_tb;

    Resultado retornado:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Community-compatible (21,8 ou anterior)

  1. Faça logon no banco de dados.

    1. Faça logon no console do ApsaraDB for ClickHouse.

    2. Na página Clusters, clique em aba Clusters of Community-compatible Edition e, em seguida, clique em ID do cluster desejado.

    3. Na página Cluster Information, clique em Log On to Database no canto superior direito.

    4. Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.

  2. Crie uma tabela externa do OSS.

    Sintaxe:

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Descrição

    Exemplo

    table_name

    Nome da tabela.

    oss_test_tb

    col_name1,col_name2

    Nomes das colunas.

    user_name

    col_type1,col_type2

    Tipos de dados das colunas.

    Importante

    O esquema da tabela externa do OSS deve ser consistente com os dados no OSS.

    String

    oss-endpoint

    Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints.

    Importante

    Certifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região.

    oss-cn-hangzhou-internal.aliyuncs.com

    access-key-id

    AccessKey ID do usuário RAM para acessar dados do OSS.

    yourAccessKeyID

    access-key-secret

    AccessKey secret do usuário RAM para acessar dados do OSS.

    Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey.

    Importante

    Para reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura.

    yourAccessKeySecret

    oss-file-path

    Caminho de armazenamento do objeto, geralmente no formato oss://<bucket-name>/<path-to-file>.

    Nota

    O parâmetro oss-file-path oferece suporte a correspondência aproximada com curingas. Para mais informações, consulte Use wildcards for fuzzy matching of storage paths in OSS.

    oss://ck-test-oss/test.csv

    file-format-name

    Formato do objeto.

    Importante

    O valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse.

    CSV

    Exemplo:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');
  3. Consulte dados do OSS.

    SELECT * FROM oss_test_tb;

    Resultado retornado:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Método 2: Função de tabela

Enterprise ou Community-compatible (22,8 ou posterior)

  1. Faça logon no banco de dados.

    1. Faça logon no console do ApsaraDB for ClickHouse.

    2. Na página Clusters, clique em aba Clusters of Community-compatible Edition ou Enterprise Edition Clusters e, em seguida, clique em ID do cluster desejado.

    3. Na página Cluster Information, clique em Log On to Database no canto superior direito.

    4. Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.

  2. Use uma função de tabela para consultar dados.

    Sintaxe:

    SELECT * FROM oss('https://<bucket-name>.<oss-endpoint>/<file-name>','<access-key-id>', '<access-key-secret>', '<file-format-name>', '<col_name> <col_type>(,...)');

    Os parâmetros são os mesmos utilizados na criação de uma tabela externa do OSS. Para detalhes, consulte Parameter descriptions.

    Exemplo:

    SELECT * FROM oss('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String')

    Resultado retornado:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Community-compatible (21,8 ou anterior)

  1. Faça logon no banco de dados.

    1. Faça logon no console do ApsaraDB for ClickHouse.

    2. Na página Clusters, clique em aba Clusters of Community-compatible Edition e, em seguida, clique em ID do cluster desejado.

    3. Na página Cluster Information, clique em Log On to Database no canto superior direito.

    4. Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.

  2. Use uma função de tabela para consultar dados.

    Sintaxe:

    SELECT * FROM oss('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>', '<col_name> <col_type>(,...)');

    Os parâmetros são os mesmos utilizados na criação de uma tabela externa do OSS. Para detalhes, consulte Parameter descriptions.

    Exemplo:

    SELECT * FROM oss('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String');

    Resultado retornado:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Exporte dados do ClickHouse ou grave dados no OSS

Notas de uso

Enterprise Edition ou Community-compatible Edition 22,8 ou posterior

Ao exportar ou gravar dados no OSS, defina s3_truncate_on_insert=1 ou s3_create_new_file_on_insert=1. Se nenhum dos parâmetros for definido ou se ambos forem definidos como 0, a operação falhará caso já exista um arquivo no caminho de destino.

  • s3_truncate_on_insert=1: O ApsaraDB for ClickHouse verifique se existe um arquivo no caminho de destino.

    • Caso exista, o ClickHouse sobrescreve o arquivo existente com os novos dados.

    • Indicado para exportações ou gravações com substituição total. No entanto, prossiga com cautela, pois essa operação exclui os dados originais.

  • s3_create_new_file_on_insert=1: O ClickHouse verifique se existe um arquivo no caminho de destino.

    • Se houver um arquivo existente, o ClickHouse cria um novo arquivo no diretório e grava os dados nele. O novo arquivo segue o padrão de nomenclatura: nome do arquivo alvo + número sequencial (começando em 0 e incrementando de 1 em 1) + nome do formato de arquivo.

      Por exemplo, se o arquivo alvo for test.csv, a primeira operação cria test0.csv e a segunda cria test1.csv.

    • Recomendado para exportações ou gravações incrementais, evitando a substituição de dados existentes.

Community-compatible Edition 21,8 ou anterior

Ao exportar ou gravar dados, apenas um único arquivo do OSS é utilizado. Os novos dados substituem o conteúdo do arquivo original. Prossiga com cautela.

Etapa 1: Faça logon no banco de dados

  1. Faça logon no console do ApsaraDB for ClickHouse.

  2. Na página Clusters, clique em aba Clusters of Community-compatible Edition ou Enterprise Edition Clusters e, em seguida, clique em ID do cluster desejado.

  3. No canto superior direito da página Cluster Information, clique em Log On to Database.

  4. Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.

Etapa 2: (Opcional) Prepare os dados para exportação

Caso precise preparar dados de amostra para exportar do ApsaraDB for ClickHouse para o OSS, siga estas etapas.

Se já possuir dados para exportar, pule esta etapa.

  1. Crie uma tabela de acordo com a edição do seu cluster.

    Este exemplo cria uma tabela em um cluster Community-compatible Edition de réplica única. Se o seu cluster for de réplica dupla executando Enterprise Edition ou Community-compatible Edition, consulte Create a table.

     CREATE TABLE test_tb_local ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = MergeTree()
    ORDER BY id;
  2. Insira dados de amostra.

    INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');
  3. (Opcional) Visualize os dados.

    Execute a instrução a seguir para verifique se os dados foram inseridos.

    SELECT * FROM test_tb_local;

Etapa 3: Crie uma tabela externa do OSS

Enterprise Edition ou Community-compatible Edition 22,8 ou posterior

Sintaxe:

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

A tabela a seguir descreve os parâmetros.

Parâmetro

Descrição

Exemplo

table_name

Nome da tabela.

oss_test_tb

col_name1,col_name2

Nomes das colunas.

user_name

col_type1,col_type2

Tipos de dados das colunas.

Importante

O esquema da tabela externa do OSS deve ser consistente com os dados no OSS.

String

bucket-name

Nome do bucket do OSS.

ck-test-oss

oss-endpoint

Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints.

Importante

Certifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região.

oss-cn-hangzhou-internal.aliyuncs.com

file-name

Nome do objeto no bucket do OSS.

test.csv

access-key-id

AccessKey ID do usuário RAM para acessar dados do OSS.

yourAccessKeyID

access-key-secret

AccessKey secret do usuário RAM para acessar dados do OSS.

Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey.

Importante

Para reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura.

yourAccessKeySecret

file-format-name

Formato do objeto.

Importante

O valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse.

CSV

Exemplo:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')

Community-compatible Edition 21,8 ou anterior

Sintaxe:

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

A tabela a seguir descreve os parâmetros.

Parâmetro

Descrição

Exemplo

table_name

Nome da tabela.

oss_test_tb

col_name1,col_name2

Nomes das colunas.

user_name

col_type1,col_type2

Tipos de dados das colunas.

Importante

O esquema da tabela externa do OSS deve ser consistente com os dados no OSS.

String

oss-endpoint

Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints.

Importante

Certifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região.

oss-cn-hangzhou-internal.aliyuncs.com

access-key-id

AccessKey ID do usuário RAM para acessar dados do OSS.

yourAccessKeyID

access-key-secret

AccessKey secret do usuário RAM para acessar dados do OSS.

Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey.

Importante

Para reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura.

yourAccessKeySecret

oss-file-path

Caminho de armazenamento do objeto, geralmente no formato oss://<bucket-name>/<path-to-file>.

Nota

O parâmetro oss-file-path oferece suporte a correspondência aproximada com curingas. Para mais informações, consulte Use wildcards for fuzzy matching of storage paths in OSS.

oss://ck-test-oss/test.csv

file-format-name

Formato do objeto.

Importante

O valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse.

CSV

Exemplo:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');

Etapa 4: Exporte ou grave dados no OSS

Use uma instrução INSERT INTO na tabela externa do OSS para exportar ou gravar dados no OSS. Para detalhes da sintaxe, consulte INSERT INTO.

Exporte dados do ClickHouse

Enterprise Edition ou Community-compatible Edition 22,8 ou posterior

  • Exportação com substituição total (exporta dados para o OSS e substitui os dados existentes).

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local;
  • Exportação incremental (exporta dados para o OSS sem substituir os dados existentes).

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 SELECT * FROM test_tb_local;

    Esta operação cria um novo arquivo no bucket do OSS. O novo arquivo segue o padrão de nomenclatura: nome do arquivo alvo + número sequencial (começando em 0 e incrementando de 1 em 1) + nome do formato de arquivo.

    Por exemplo, se o nome do arquivo alvo especificado ao criar a tabela externa do OSS for test.csv, o novo arquivo será nomeado como test0.csv. Ao execute a operação novamente, o novo arquivo será test1.csv. Use o OSS console para visualize o novo arquivo.

Community-compatible Edition 21,8 ou anterior

Importante

A exportação de dados do ApsaraDB for ClickHouse para o OSS substitui os dados existentes. Prossiga com cautela.

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

Grave dados

Enterprise Edition ou Community-compatible Edition 22,8 ou posterior

  • Grave novos dados no OSS e substitua os dados existentes.

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
  • Grave novos dados no OSS sem substituir os dados existentes.

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

    Esta operação cria um novo arquivo no bucket do OSS. O novo arquivo segue o padrão de nomenclatura: nome do arquivo alvo + número sequencial (começando em 0 e incrementando de 1 em 1) + nome do formato de arquivo.

    Por exemplo, se o nome do arquivo alvo especificado ao criar a tabela externa do OSS for test.csv, o novo arquivo será nomeado como test0.csv. Ao execute a operação novamente, o novo arquivo será test1.csv. Use o OSS console para visualize o novo arquivo.

Community-compatible Edition 21,8 ou anterior

Importante

A gravação de dados do ApsaraDB for ClickHouse no OSS substitui os dados existentes. Prossiga com cautela.

INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

Mais operações: Importe dados do OSS para o ClickHouse

Se utilizar o OSS como armazenamento intermediário para migração de dados, também será necessário importar os dados do OSS para o cluster de destino. Para mais informações, consulte Import data from OSS.