Todos os produtos
Search
Central de documentação

AnalyticDB:Importar dados do OSS usando tabelas externas

Última atualização: Sep 22, 2026

AnalyticDB for MySQL oferece suporte à importação de dados externos por meio de tabelas externas. Este tópico explica como usá-las para importar dados do OSS para um cluster do AnalyticDB for MySQL.

Pré-requisitos

  • O cluster do AnalyticDB for MySQL e o bucket do OSS estão na mesma região. Para mais informações, consulte Activate OSS.

  • Você enviou os arquivos de dados para um diretório do OSS.

  • O acesso à interface de rede elástica (ENI) está habilitado para o seu cluster do AnalyticDB for MySQL Data Warehouse Edition.

    Importante
    • Acesse o console do AnalyticDB for MySQL. Na página Cluster Information, em Network Information, ative o switch de rede ENI.

    • Ativar ou desativar a rede ENI interrompe a conectividade do banco de dados por cerca de 2 minutos, tornando as operações de leitura e gravação indisponíveis. Avalie cuidadosamente o impacto antes de ativar ou desativar a rede ENI.

Preparação de dados

Este exemplo envia o arquivo de dados person.csv para o diretório testBucketName/adb/dt=2023-06-15 no OSS. O arquivo usa uma quebra de linha como delimitador de linha e uma vírgula (,) como delimitador de coluna. O arquivo person.csv contém os seguintes dados de exemplo:

1,james,10,2023-06-15
2,bond,20,2023-06-15
3,jack,30,2023-06-15
4,lucy,40,2023-06-15       

Procedimento

Edições Enterprise, Basic e Data Lakehouse

  1. Acesse o editor de SQL Development.

    1. Acesse o console do AnalyticDB for MySQL. No canto superior esquerdo do console, selecione uma região. No painel de navegação à esquerda, clique em Clusters. Encontre o cluster que deseja gerenciar e clique em ID do cluster.

    2. No painel de navegação à esquerda, escolha Job Development > SQL Development.

  2. Importe os dados.

    É possível importar dados usando a importação regular (padrão) ou a importação elástica. No modo de importação regular, o sistema lê os dados source dos nós de computação e cria índices nos nós de armazenamento, consumindo recursos de computação e armazenamento. O método de importação elástica é compatível apenas com clusters das edições Enterprise Edition, Basic Edition e Data Lakehouse Edition que executam a versão de kernel 3.1.10.0 ou posterior e possuem um grupo de recursos de job. Para mais informações, consulte Data import methods.

    Importação regular

    1. Crie um banco de dados externo.

      CREATE EXTERNAL DATABASE adb_external_db;
    2. Crie uma tabela externa. Use a instrução CREATE EXTERNAL TABLE para criar uma tabela externa do OSS no banco de dados externo adb_external_db. Este tópico usa adb_external_db.person como exemplo.

      Nota

      A tabela externa do AnalyticDB for MySQL deve ter os mesmos nomes de campo, número de campos, ordem dos campos e tipos de dados do arquivo source do OSS.

      Criar uma tabela externa do OSS não particionada

      CREATE EXTERNAL TABLE adb_external_db.person
      (
       id INT,
       name VARCHAR(1023),
       age INT,
       dt VARCHAR(1023)
      )
      ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
      STORED AS TEXTFILE
      LOCATION  'oss://testBucketName/adb/dt=2023-06-15/';

      Criar uma tabela externa do OSS particionada

      Antes de consultar uma tabela externa do OSS particionada, é necessário criá-la e adicionar as partições necessárias.

      1. Crie uma tabela externa do OSS particionada.

        CREATE EXTERNAL TABLE adb_external_db.person
        (
         id INT,
         name VARCHAR(1023) ,
         age INT
        )
        PARTITIONED BY (dt STRING)
        ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
        STORED AS TEXTFILE
        LOCATION  'oss://testBucketName/adb/';
      2. Use a instrução ALTER TABLE ADD PARTITION para adicionar uma partição manualmente ou a instrução MSCK REPAIR TABLE para encontrar e adicionar partições automaticamente.

        ALTER TABLE adb_external_db.person ADD PARTITION (dt='2023-06-15') LOCATION 'oss://testBucketName/adb/dt=2023-06-15/';
        Nota

      Para mais informações sobre a sintaxe de criação de tabelas externas do OSS, consulte CREATE EXTERNAL TABLE.

    3. Consulte os dados.

      Depois de criar a tabela externa, execute uma instrução SELECT no AnalyticDB for MySQL para consultar dados do OSS.

      SELECT * FROM adb_external_db.person;

      O resultado retornado é o seguinte:

      +------+-------+------+-----------+
      | id   | name  | age  | dt        |
      +------+-------+------+-----------+
      |    1 | james |   10 |2023-06-15 |
      |    2 | bond  |   20 |2023-06-15 |
      |    3 | jack  |   30 |2023-06-15 |
      |    4 | lucy  |   40 |2023-06-15 |
      +------+-------+------+-----------+
    4. Crie um banco de dados no AnalyticDB for MySQL. Se já existir um banco de dados, ignore esta etapa. Exemplo de instrução:

      CREATE DATABASE adb_demo; 
    5. Crie uma tabela no AnalyticDB for MySQL para armazenar os dados importados do OSS. Exemplo de instrução:

      Nota

      A tabela interna deve corresponder à tabela externa da etapa b em nomes de campo, número de campos, ordem dos campos e tipos de dados.

      CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test(
          id INT,
          name VARCHAR(1023),
          age INT,
          dt VARCHAR(1023)
      )
      DISTRIBUTED BY HASH(id);
    6. Importe os dados para a tabela.

      • Método 1: Use a instrução INSERT INTO para importar dados. Se um valor de chave primária for duplicado, o sistema ignora os novos dados. Isso equivale ao uso de INSERT IGNORE INTO. Para mais informações, consulte INSERT INTO.

        INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
      • Método 2: Use a instrução INSERT OVERWRITE INTO para importar dados de forma síncrona. Isso sobrescreve os dados existentes na tabela.

        INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
      • Método 3: Use a instrução INSERT OVERWRITE INTO para importar dados de forma assíncrona. Para mais informações, consulte Asynchronous write.

        SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;

    Importação elástica

    1. Crie um banco de dados. Se já existir um banco de dados, ignore esta etapa. Exemplo de instrução:

      CREATE DATABASE adb_demo; 
    2. Crie uma tabela externa.

      Nota
      • A tabela externa do AnalyticDB for MySQL deve ter os mesmos nomes de campo, número de campos, ordem dos campos e tipos de dados do arquivo source do OSS.

      • A importação elástica é compatível apenas com a criação de tabelas externas por meio da instrução CREATE TABLE.

      CREATE TABLE oss_import_test_external_table
      (
        id INT(1023),
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023)
      )
      ENGINE='OSS'
      TABLE_PROPERTIES='{
          "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
          "url":"oss://testBucketName/adb/dt=2023-06-15/person.csv",
          "accessid":"accesskey_id",
          "accesskey":"accesskey_secret",
          "delimiter":","
      }';
      Importante

      Ao criar uma tabela externa, os parâmetros TABLE_PROPERTIES compatíveis variam de acordo com o formato do arquivo (CSV, Parquet ou ORC):

      • Formato CSV: são compatíveis apenas os parâmetros endpoint, url, accessid, accesskey, format, delimiter, null_value, maxlinelength e partition_column.

      • Formato Parquet: são compatíveis apenas os parâmetros endpoint, url, accessid, accesskey, format, maxlinelength e partition_column.

      • Formato ORC: são compatíveis apenas os parâmetros endpoint, url, accessid, accesskey, format, maxlinelength e partition_column.

      Para mais informações sobre os parâmetros configuráveis para tabelas externas e suas descrições, consulte OSS non-partitioned external tables e OSS partitioned external tables.

    3. Consulte os dados.

      Depois de criar a tabela externa, execute uma instrução SELECT no AnalyticDB for MySQL para consultar dados do OSS.

      SELECT * FROM oss_import_test_external_table;

      O resultado retornado é o seguinte:

      +------+-------+------+-----------+
      | id   | name  | age  | dt        |
      +------+-------+------+-----------+
      |    1 | james |   10 |2023-06-15 |
      |    2 | bond  |   20 |2023-06-15 |
      |    3 | jack  |   30 |2023-06-15 |
      |    4 | lucy  |   40 |2023-06-15 |
      +------+-------+------+-----------+
      4 rows in set (0.35 sec)
    4. Crie uma tabela no AnalyticDB for MySQL para armazenar os dados importados do OSS. Exemplo de instrução:

      Nota

      A tabela interna deve corresponder à tabela externa da etapa b em nomes de campo, número de campos, ordem dos campos e tipos de dados.

      CREATE TABLE adb_import_test
      (
        id INT,
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023)
      )
      DISTRIBUTED BY HASH(id);
    5. Importe os dados.

      Importante

      A importação elástica permite importar dados apenas por meio da instrução INSERT OVERWRITE INTO.

      • Método 1: Execute a instrução INSERT OVERWRITE INTO para importar dados elasticamente, sobrescrevendo os dados existentes na tabela. Exemplo de instrução:

        /*+elastic_load=true, elastic_load_configs=[adb.load.resource.group.name=resource_group]*/
        INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_demo.oss_import_test_external_table;
      • Método 2: Execute a instrução INSERT OVERWRITE INTO de forma assíncrona para importar dados elasticamente. Use a instrução SUBMIT JOB para enviar uma tarefa assíncrona para agendamento em segundo plano.

        /*+elastic_load=true, elastic_load_configs=[adb.load.resource.group.name=resource_group]*/
        SUBMIT JOB INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_demo.oss_import_test_external_table;
        Importante

        Não é possível definir uma fila de prioridade ao enviar uma tarefa de importação elástica de forma assíncrona.

        O resultado retornado é o seguinte:

        +---------------------------------------+
        | job_id                                |
        +---------------------------------------+
        | 202308151719510210170190**********    |

      Depois de enviar uma tarefa assíncrona usando SUBMIT JOB, o resultado indica apenas o envio bem-sucedido da tarefa. Use o ID do job para encerrar a tarefa assíncrona ou consultar o status para determinar se a execução foi concluída com sucesso. Para mais informações, consulte Submit an asynchronous import job.

      Parâmetros de hint:

      • elastic_load: define se a importação elástica será usada. Valores válidos: true e false. Valor padrão: false.

      • elastic_load_configs: os parâmetros de configuração do recurso de importação elástica. Coloque os parâmetros entre colchetes ([ ]) e separe múltiplos parâmetros com barras verticais (|). A tabela a seguir descreve os parâmetros.

        Parâmetro

        Obrigatório

        Descrição

        adb.load.resource.group.name

        Sim

        O nome do grupo de recursos de job que executa o job de importação elástica.

        adb.load.job.max.acu

        Não

        A quantidade máxima de recursos para um job de importação elástica. Unidade: unidades de computação do AnalyticDB (ACUs). Valor mínimo: 5 ACUs. Valor padrão: número de shards mais 1.

        Execute a seguinte instrução para consultar o número de shards no cluster:

        SELECT count(1) FROM information_schema.kepler_meta_shards;

        spark.driver.resourceSpec

        Não

        O tipo de recurso do driver do Spark. Valor padrão: small. Para informações sobre os valores válidos, consulte a coluna Type na tabela "Spark application configuration parameters" do tópico de parâmetros de configuração Conf.

        spark.executor.resourceSpec

        Não

        O tipo de recurso do executor do Spark. Valor padrão: large. Para informações sobre os valores válidos, consulte a coluna Type na tabela "Spark application configuration parameters" do tópico de parâmetros de configuração Conf.

        spark.adb.executorDiskSize

        Não

        A capacidade de disco do executor do Spark. Valores válidos: (0.100]. Unidade: GiB. Valor padrão: 10 GiB. Para mais informações, consulte a seção "Specify driver and executor resources" do tópico de parâmetros de configuração Conf.

    6. (Opcional) Verifique se a tarefa de importação enviada é uma tarefa de importação elástica.

      SELECT job_name, (job_type = 3) AS is_elastic_load FROM INFORMATION_SCHEMA.kepler_meta_async_jobs where job_name = "2023081818010602101701907303151******";

      O resultado retornado é o seguinte:

      +---------------------------------------+------------------+
      | job_name                              | is_elastic_load  |
      +---------------------------------------+------------------+
      | 20230815171951021017019072*********** |       1          |
      +---------------------------------------+------------------+

      Se o valor de is_elastic_load for 1, trata-se de uma tarefa de importação elástica. Se o valor for 0, trata-se de uma importação regular.

Edição Data Warehouse

  1. Connect to a cluster e crie um banco de dados.

    CREATE DATABASE adb_demo;
  2. Crie uma tabela externa. Use a sintaxe CREATE TABLE para criar uma tabela externa do OSS nos formatos CSV, Parquet ou ORC. Para mais informações sobre a sintaxe, consulte OSS external table syntax.

    Este tópico usa uma tabela externa não particionada no formato CSV como exemplo.

    CREATE TABLE IF NOT EXISTS oss_import_test_external_table
    (
        id INT,
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023) 
    )
    ENGINE='OSS'
    TABLE_PROPERTIES='{
        "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
        "url":"oss://testBucketname/adb/dt=2023-06-15/person.csv",
        "accessid":"accesskey_id",
        "accesskey":"accesskey_secret",
        "delimiter":",",
        "skip_header_line_count":0,
        "charset":"utf-8"
    }'; 
  3. Consulte os dados da tabela externa oss_import_test_external_table.

    Nota

    Para arquivos de dados CSV, Parquet ou ORC, consultar uma tabela externa grande pode causar sobrecarga significativa de desempenho. Para melhorar a eficiência da consulta, recomendamos a importação dos dados da tabela externa do OSS para o AnalyticDB for MySQL antes de executar as consultas, conforme descrito nas etapas 4 e 5.

    SELECT * FROM oss_import_test_external_table;
  4. Crie uma tabela no AnalyticDB for MySQL para armazenar os dados importados da tabela externa do OSS.

    CREATE TABLE IF NOT EXISTS adb_oss_import_test
    (
       id INT,
       name VARCHAR(1023),
       age INT,
       dt VARCHAR(1023) 
    )
    DISTRIBUTED BY HASH(id);
  5. Execute uma instrução INSERT para importar dados da tabela externa do OSS para o AnalyticDB for MySQL.

    Importante

    Por padrão, as operações de importação de dados que usam INSERT INTO ou INSERT OVERWRITE SELECT executam de forma síncrona. Para grandes conjuntos de dados, como aqueles na casa das centenas de gigabytes, o cliente precisa manter uma conexão persistente com o servidor do AnalyticDB for MySQL por um longo período. Durante esse tempo, problemas de rede podem interromper a conexão e causar falhas na importação. Portanto, para grandes volumes de dados, recomendamos usar SUBMIT JOB INSERT OVERWRITE SELECT para realizar a importação de forma assíncrona.

    • Método 1: Execute a instrução INSERT INTO para importar dados. Se uma chave primária for duplicada, a operação de gravação atual é ignorada e os dados não são atualizados. Esse comportamento equivale a INSERT IGNORE INTO. Para mais informações, consulte INSERT INTO. Exemplo de instrução:

      INSERT INTO adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;
    • Método 2: Execute a instrução INSERT OVERWRITE para importar dados, sobrescrevendo os dados existentes na tabela. Exemplo de instrução:

      INSERT OVERWRITE adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;
    • Método 3: Execute a instrução INSERT OVERWRITE de forma assíncrona para importar dados. Use SUBMIT JOB para enviar uma tarefa assíncrona para agendamento em segundo plano. Adicione um hint (/*+ direct_batch_load=true*/) antes da tarefa de gravação para acelerá-la. Para mais informações, consulte Asynchronous write. Exemplo de instrução:

      SUBMIT JOB INSERT OVERWRITE adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;

      O resultado retornado é o seguinte:

      +---------------------------------------+
      | job_id                                |
      +---------------------------------------+
      | 2020112122202917203100908203303****** |

      Para mais informações sobre como enviar uma tarefa assíncrona, consulte Submit an asynchronous import job.

Sintaxe de tabela externa do OSS

Enterprise, Basic e Data Lakehouse

Para informações sobre a sintaxe de criação de tabelas externas do OSS nas edições Enterprise Edition, Basic Edition e Data Lakehouse Edition, consulte OSS external tables.

Data Warehouse

Tabela externa não particionada do OSS

CREATE TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OSS'
TABLE_PROPERTIES='{
    "endpoint":"endpoint",
    "url":"OSS_LOCATION",
    "accessid":"accesskey_id",
    "accesskey":"accesskey_secret",
    "format":"csv|orc|parquet|text
    "delimiter|field_delimiter":";",
    "skip_header_line_count":1,
    "charset":"utf-8"
}';

Tipo de tabela externa

Parâmetro

Obrigatório

Descrição

Tabelas externas nos formatos CSV, Parquet e ORC

ENGINE='OSS'

Sim

O motor da tabela. Defina o valor como OSS.

endpoint

O Endpoint do bucket do OSS. Atualmente, o AnalyticDB for MySQL pode acessar o OSS apenas por meio de uma rede VPC.

Nota

Acesse o console do OSS, clique em bucket de destino e visualize o Endpoint na página Overview do bucket.

url

O caminho para o arquivo ou diretório do OSS.

  • Para um arquivo do OSS, especifique o caminho absoluto. Exemplo: oss://testBucketname/adb/oss_import_test_data.csv.

  • Os caminhos de diretório devem terminar com uma barra (/). Exemplo: oss://testBucketname/adb/.

    Nota

    A tabela externa incluirá todos os dados do diretório especificado.

  • Use o caractere curinga () no final do caminho para corresponder a todos os arquivos ou pastas com um prefixo específico. Exemplo: oss://testBucketname/adb/list_file_with_prefix/test

    Nota

    O curinga neste exemplo corresponde a todos os arquivos e pastas que coincidem com o prefixo, como oss://testBucketname/adb/list_file_with_prefix/testfile1 e

    oss://testBucketname/adb/list_file_with_prefix/test1/file2.

accessid

O AccessKey ID de uma conta Alibaba Cloud ou de um usuário RAM que tenha permissões de gerenciamento do OSS.

Para informações sobre como obter um AccessKey ID, consulte Accounts and permissions.

accesskey

O AccessKey Secret de uma conta Alibaba Cloud ou de um usuário RAM que tenha permissões de gerenciamento do OSS.

Para obter um AccessKey Secret, consulte Accounts and permissions.

format

Condicionalmente obrigatório

O formato do arquivo.

  • Para criar uma tabela externa Parquet, defina este parâmetro como parquet.

  • Para criar uma tabela externa ORC, defina este parâmetro como orc.

  • Para criar uma tabela externa Text, defina este parâmetro como text.

  • Se você não especificar este parâmetro, o formato de arquivo padrão é csv.

    Nota

    O valor do parâmetro diferencia maiúsculas e minúsculas.

maxlinelength

Não

Valor padrão: 32768 (32 KB). Se o arquivo de dados contiver linhas que excedam esse comprimento, aumente este parâmetro.

Exemplo: "maxlinelength": 100000.

Tabelas externas nos formatos CSV e Text

delimiter|field_delimiter

Sim

O delimitador de coluna do arquivo de dados.

  • Se o tipo de arquivo for csv, o nome do parâmetro é delimiter.

  • Se o tipo de arquivo for text, o nome do parâmetro é field_delimiter.

Tabelas externas no formato CSV

null_value

Não

Define o que representa um valor NULL no arquivo de dados CSV. Por padrão, um valor vazio é tratado como NULL. Exemplo: "null_value": "".

Importante

Este parâmetro requer um cluster com versão de kernel 3.1.4.2 ou posterior.

ossnull

Define a regra para interpretar valores NULL no arquivo de dados CSV. Valores válidos:

  • 1 (padrão): EMPTY_SEPARATORS. Trata apenas valores vazios como NULL.

    Exemplo: a,"",,c --> "a","",NULL,"c"

  • 2: EMPTY_QUOTES. Trata apenas "" como NULL.

    Exemplo: a,"",,c --> "a",NULL,"","c"

  • 3: BOTH. Trata tanto valores vazios quanto "" como NULL.

    Exemplo: a,"",,c --> "a",NULL,NULL,"c"

  • 4: NEITHER. Não trata nem valores vazios nem "" como NULL.

    Exemplo: a,"",,c --> "a","","","c"

Nota

Os exemplos anteriores assumem que "null_value": "".

skip_header_line_count

O número de linhas a serem ignoradas a partir do início do arquivo de dados. Por exemplo, se um arquivo CSV tiver uma linha de cabeçalho, defina este parâmetro como 1 para ignorá-la.

O valor padrão é 0, o que indica que nenhuma linha é ignorada.

oss_ignore_quote_and_escape

Se definido como true, o sistema ignora aspas e caracteres de escape nos valores dos campos. O padrão é false.

Importante

Este parâmetro requer um cluster com versão de kernel 3.1.4.2 ou posterior.

charset

O conjunto de caracteres da tabela externa do OSS. Valores válidos:

  • utf-8 (padrão)

  • gbk

Importante

Este parâmetro requer um cluster com versão de kernel 3.1.10.4 ou posterior.

Nota
  • Os nomes das colunas na instrução CREATE TABLE para a tabela externa devem ser idênticos aos nomes das colunas no arquivo Parquet ou ORC, mas não fazem distinção entre maiúsculas e minúsculas. A ordem das colunas também deve ser a mesma.

  • Ao criar uma tabela externa, selecione apenas algumas colunas do arquivo Parquet ou ORC para serem colunas na tabela externa. As colunas não selecionadas não são importadas.

  • Se a instrução CREATE TABLE para a tabela externa incluir uma coluna que não existe no arquivo Parquet ou ORC, as consultas para essa coluna retornam NULL.

AnalyticDB for MySQL pode ler e gravar arquivos TEXT do Hive usando uma tabela externa do OSS no formato CSV. Use a seguinte instrução para criar a tabela:

CREATE TABLE adb_csv_hive_format_oss (
  a tinyint,
  b smallint,
  c int,
  d bigint,
  e boolean,
  f float,
  g double,
  h varchar,
  i varchar, -- binary
  j timestamp,
  k DECIMAL(10, 4),
  l varchar, -- char(10)
  m varchar, -- varchar(100)
  n date
) ENGINE = 'OSS' TABLE_PROPERTIES='{
    "format": "csv",
    "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
    "accessid":"accesskey_id",
    "accesskey":"accesskey_secret",
    "url":"oss://testBucketname/adb_data/",
    "delimiter": "\\1",
    "null_value": "\\\\N",
    "oss_ignore_quote_and_escape": "true",
    "ossnull": 2
}';
Nota

Observe os seguintes pontos ao criar uma tabela externa do OSS no formato CSV para ler arquivos TEXT do Hive:

  • O delimitador de coluna padrão para arquivos TEXT do Hive é \1. Ao usar uma tabela externa do OSS formatada em CSV para ler ou gravar esses arquivos, defina o parâmetro delimiter com o valor de escape \\1.

  • O valor NULL padrão para arquivos TEXT do Hive é \N. Ao usar uma tabela externa do OSS formatada em CSV para ler ou gravar esses arquivos, defina o parâmetro null_value com o valor de escape \\\\N.

  • Outros tipos de dados básicos do Hive, como BOOLEAN, mapeiam diretamente para os tipos de dados do AnalyticDB for MySQL. No entanto, os tipos BINARY, CHAR(n) e VARCHAR(n) mapeiam para o tipo AnalyticDB for MySQL VARCHAR.

Apêndice: Mapeamentos de tipos de dados

Importante
  • Os tipos de dados especificados ao criar uma tabela devem corresponder aos mapeamentos nas tabelas a seguir. Para o tipo DECIMAL, a precisão também deve corresponder.

  • As tabelas externas Parquet não suportam o tipo STRUCT. O uso desse tipo causa falha na criação da tabela.

  • As tabelas externas ORC não suportam tipos complexos como LIST, STRUCT e UNION. O uso desses tipos causa falha na criação da tabela. É possível criar uma tabela externa ORC com uma coluna do tipo MAP, mas as consultas à tabela falharão.

Mapeamento de tipos de dados entre arquivos Parquet e **AnalyticDB for MySQL**

Tipo primitivo do Parquet

Tipo lógico do Parquet

Tipo do AnalyticDB for MySQL

BOOLEAN

None

BOOLEAN

INT32

INT_8

TINYINT

INT32

INT_16

SMALLINT

INT32

None

INT or INTEGER

INT64

None

BIGINT

FLOAT

None

FLOAT

DOUBLE

None

DOUBLE

  • FIXED_LEN_BYTE_ARRAY

  • BINARY

  • INT64

  • INT32

DECIMAL

DECIMAL

BINARY

UTF-8

  • VARCHAR

  • STRING

  • JSON (se a coluna do Parquet contiver JSON)

INT32

DATE

DATE

INT64

TIMESTAMP_MILLIS

TIMESTAMP or DATETIME

INT96

None

TIMESTAMP or DATETIME

Mapeamento de tipos de dados entre arquivos ORC e **AnalyticDB for MySQL**

Tipo ORC

Tipo do AnalyticDB for MySQL

BOOLEAN

BOOLEAN

BYTE

TINYINT

SHORT

SMALLINT

INT

INT or INTEGER

LONG

BIGINT

DECIMAL

DECIMAL

FLOAT

FLOAT

DOUBLE

DOUBLE

  • BINARY

  • STRING

  • VARCHAR

  • VARCHAR

  • STRING

  • JSON (se a coluna ORC contiver JSON)

TIMESTAMP

TIMESTAMP or DATETIME

DATE

DATE

Mapeamento de tipos de dados entre arquivos Paimon e **AnalyticDB for MySQL**

Tipo Paimon

**Tipo do AnalyticDB for MySQL**

CHAR

VARCHAR

VARCHAR

VARCHAR

BOOLEAN

BOOLEAN

BINARY

VARBINARY

VARBINARY

VARBINARY

DECIMAL

DECIMAL

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INTEGER

BIGINT

BIGINT

FLOAT

REAL

DOUBLE

DOUBLE

DATE

DATE

TIME

Não compatível

TIMESTAMP

TIMESTAMP

LocalZonedTIMESTAMP

TIMESTAMP (ignora informações de fuso horário local)

ARRAY

ARRAY

MAP

MAP

ROW

ROW