Todos os produtos
Search
Central de documentação

AnalyticDB:Importar dados do OSS usando tabelas externas

Última atualização: Aug 20, 2026

AnalyticDB for MySQL permite importar dados externos por meio de tabelas externas. Este tópico explica como usar esse recurso para importar dados do OSS para um cluster AnalyticDB for MySQL.

Pré-requisitos

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

  • Você já enviou os data files para um diretório do OSS.

  • O acesso à interface de rede elástica (ENI) está ativado no cluster AnalyticDB for MySQL Data Warehouse Edition.

    Importante
    • Faça login no 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 dos 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 quebra de linha como delimitador de linhas e vírgula (,) como delimitador de colunas. O arquivo person.csv contém os seguintes dados de amostra:

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

Enterprise, basic, and data lakehouse editions

  1. Acesse o editor SQL Development.

    1. Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo do console, selecione uma região. No painel de navegação à esquerda, clique em Clusters. Localize o cluster que deseja gerenciar e clique no 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 de origem nos nós de computação e cria índices nos nós de armazenamento, consumindo recursos de computação e armazenamento. A importação elástica é suportada apenas em clusters Enterprise Edition, Basic Edition e Data Lakehouse Edition com versão de kernel 3.1.10.0 ou posterior que possuam um grupo de recursos do tipo job. Para mais informações, consulte Data import methods.

    Regular import

    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 campos, quantidade de campos, ordem dos campos e tipos de dados do arquivo de origem no OSS.

      Create a non-partitioned OSS external table

      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/';

      Create a partitioned OSS external table

      Antes de consultar uma tabela externa particionada do OSS, crie-a e adicione as partições necessárias.

      1. Crie uma tabela externa particionada do OSS.

        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 use a instrução MSCK REPAIR TABLE para localizar 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.

      Após 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 é:

      +------+-------+------+-----------+
      | 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 campos, quantidade 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. Se houver duplicidade de chave primária, os novos dados serão ignorados. Isso equivale a INSERT IGNORE INTO. Para mais informações, consulte INSERT INTO. Exemplo:

        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. Essa operação substitui os dados existentes na tabela. Exemplo:

        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. Exemplo:

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

    Elastic import

    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 campos, quantidade de campos, ordem dos campos e tipos de dados do arquivo de origem no OSS.

      • A importação elástica suporta apenas a criação de tabelas externas com a 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 suportados variam conforme o formato do arquivo (CSV, Parquet ou ORC):

      • Formato CSV: Apenas os parâmetros endpoint, url, accessid, accesskey, format, delimiter, null_value, maxlinelength e partition_column são suportados.

      • Formato Parquet: Somente os parâmetros endpoint, url, accessid, accesskey, format, maxlinelength e partition_column são aceitos.

      • Formato ORC: Apenas os parâmetros endpoint, url, accessid, accesskey, format, maxlinelength e partition_column têm suporte.

      Para mais detalhes sobre os parâmetros configuráveis em 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 é:

      +------+-------+------+-----------+
      | 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 campos, quantidade 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 suporta a importação de dados apenas por meio da instrução INSERT OVERWRITE INTO.

      • Método 1: Execute a instrução INSERT OVERWRITE INTO para importar dados elasticamente, substituindo 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 assincronamente a instrução INSERT OVERWRITE INTO para importar dados de forma elástica. Use a instrução SUBMIT JOB para enviar uma tarefa assíncrona que será agendada 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 é:

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

      Após enviar uma tarefa assíncrona usando SUBMIT JOB, o resultado retornado indica apenas que a tarefa foi enviada com sucesso. Use o ID do job para encerrar a tarefa assíncrona ou consultar seu status e verificar se a execução foi concluída corretamente. 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: parâmetros de configuração do recurso de importação elástica. Os parâmetros devem ser colocados entre colchetes ([ ]) e separados por barras verticais (|). A tabela a seguir descreve esses parâmetros.

        Parameter

        Required

        Description

        adb.load.resource.group.name

        Yes

        Nome do grupo de recursos de job que executa a tarefa de importação elástica.

        adb.load.job.max.acu

        No

        Quantidade máxima de recursos para uma tarefa de importação elástica. Unidade: AnalyticDB compute units (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

        No

        Tipo de recurso do driver 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

        No

        Tipo de recurso do executor 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

        No

        Capacidade de disco do executor 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 é:

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

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

Data warehouse edition

  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 como exemplo uma tabela externa não particionada no formato CSV.

    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 dados na 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 importar os dados da tabela externa do OSS para o AnalyticDB for MySQL antes de executar 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 são executadas 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 AnalyticDB for MySQL por um longo período. Durante esse tempo, problemas de rede podem interromper a conexão e causar falha na importação. Portanto, para grandes volumes de dados, recomendamos o uso de 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 houver duplicidade de chave primária, a operação de gravação atual será ignorada e os dados não serã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, substituindo 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 assincronamente a instrução INSERT OVERWRITE 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 acelerar o processo. 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 é:

      +---------------------------------------+
      | 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, and Data Lakehouse

Para informações sobre a sintaxe de criação de tabelas externas do OSS na 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"
}';

External table type

Parameter

Required

Description

Tabelas externas nos formatos CSV, Parquet e ORC

ENGINE='OSS'

Yes

Engine da tabela. Defina o valor como OSS.

endpoint

O Endpoint do bucket do OSS. Atualmente, o AnalyticDB for MySQL acessa o OSS apenas via rede VPC.

Nota

Faça login no console do OSS, clique no bucket desejado e visualize o Endpoint na página Overview do bucket.

url

Caminho para o arquivo ou diretório no OSS.

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

  • Caminhos de diretório devem terminar com 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 compartilham o prefixo, como oss://testBucketname/adb/list_file_with_prefix/testfile1 e

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

accessid

AccessKey ID de uma conta Alibaba Cloud ou usuário RAM com permissões de gerenciamento do OSS.

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

accesskey

AccessKey Secret de uma conta Alibaba Cloud ou usuário RAM com permissões de gerenciamento do OSS.

Para obter um AccessKey Secret, consulte Accounts and permissions.

format

Condicionalmente obrigatório

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 será csv.

    Nota

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

maxlinelength

No

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

Exemplo: "maxlinelength": 100000.

Tabelas externas nos formatos CSV e Text

delimiter|field_delimiter

Yes

Delimitador de colunas 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

No

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 interpretação de 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 valores vazios nem "" como NULL.

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

Nota

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

skip_header_line_count

Número de linhas a serem ignoradas no 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, indicando que nenhuma linha será ignorada.

oss_ignore_quote_and_escape

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

Importante

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

charset

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 e sua ordem na instrução CREATE EXTERNAL TABLE devem corresponder aos do arquivo de origem Parquet ou ORC. Os nomes das colunas não diferenciam maiúsculas de minúsculas.

  • É possível criar uma tabela externa usando um subconjunto de colunas do arquivo de origem. As colunas não especificadas na instrução CREATE EXTERNAL TABLE serão ignoradas.

  • Se a instrução CREATE EXTERNAL TABLE incluir uma coluna que não existe no arquivo Parquet ou ORC, as consultas nessa coluna retornarão NULL.

O AnalyticDB for MySQL pode ler e gravar arquivos Hive TEXT 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 Hive TEXT:

  • O delimitador de colunas padrão para arquivos Hive TEXT é \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 escapado \\1.

  • O valor NULL padrão para arquivos Hive TEXT é \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 escapado \\\\N.

  • Outros tipos básicos de dados 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 todos para o tipo AnalyticDB for MySQL VARCHAR.

Apêndice: Mapeamento de tipos de dados

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

  • Tabelas externas Parquet não suportam o tipo STRUCT. Se você usar esse tipo, a criação da tabela falhará.

  • Tabelas externas ORC não suportam tipos complexos como LIST, STRUCT e UNION. Se você usar esses tipos, a criação da tabela falhará. É possível criar uma tabela externa ORC contendo uma coluna do tipo MAP, mas as consultas nessa tabela falharão.

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

Parquet primitive type

Parquet logical type

AnalyticDB for MySQL type

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 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**

ORC type

AnalyticDB for MySQL type

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**

Paimon type

AnalyticDB for MySQL type

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 suportado

TIMESTAMP

TIMESTAMP

LocalZonedTIMESTAMP

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

ARRAY

ARRAY

MAP

MAP

ROW

ROW