Todos os produtos
Search
Central de documentação

MaxCompute:LOAD

Última atualização: Sep 22, 2026

Use a instrução LOAD para carregar dados de armazenamentos de dados externos (como OSS, Hologres, Amazon Redshift ou BigQuery) em uma tabela ou partição do MaxCompute.

Visão geral

O MaxCompute usa o comando LOAD OVERWRITE ou LOAD INTO para importar dados em formato CSV ou outros formatos de código aberto a partir de armazenamentos externos, como Hologres, OSS, Amazon Redshift e BigQuery, para uma tabela ou partição do MaxCompute.

  • Importe primeiro os dados do Amazon Redshift e do BigQuery para o OSS antes de carregá-los no MaxCompute.

  • O MaxCompute usa o particionamento dinâmico para carregar dados em tabelas particionadas.

  • O comando LOAD INTO anexa dados a uma tabela ou partição. O comando LOAD OVERWRITE limpa primeiro a tabela ou partição e, em seguida, insere os novos dados.

Restrições

Requisitos de permissão

  • Permissões do MaxCompute

    • Permissões CreateTable e Alter: Necessárias para criar tabelas ou modificar dados de tabelas em um projeto do MaxCompute. Para obter instruções, consulte MaxCompute permissions.

  • Permissões de armazenamento externo

    • Permissões do OSS: Conceda as permissões de acesso ao OSS (leitura e listagem de objetos) ao MaxCompute. Para maior segurança, use o modo STS para autorização. Para mais informações, consulte Authorize access in STS mode.

    • Permissões do Hologres: Para autorizar o MaxCompute a acessar o Hologres, crie uma função do RAM, conceda a ela as permissões necessárias e adicione a função à instância do Hologres. Para obter detalhes, consulte Create a Hologres external table (STS mode).

Outras restrições

  • O comando LOAD não oferece suporte a parâmetros de allowlist/denylist.

  • O armazenamento externo e o projeto do MaxCompute de destino devem estar na mesma região.

  • Ao carregar dados do OSS:

    O schema da tabela particionada de destino (exceto as colunas de partição) deve corresponder ao schema dos dados externos. O schema dos dados externos não deve incluir as colunas de partição.

  • Ao carregar dados do Hologres:

    • Não é possível carregar dados de uma tabela particionada do Hologres para o MaxCompute.

    • O MaxCompute não pode carregar dados de uma tabela externa do Hologres que use o modo de autorização de assinatura dupla.

Carregar dados

OSS and Hologres

Carregar dados do OSS ou Hologres

Sintaxe do comando

{LOAD OVERWRITE|INTO} TABLE <table_name> [PARTITION (<pt_spec>)]
FROM LOCATION <external_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES (<Options>)];

Parâmetros

OSS

Clique para ver os detalhes dos parâmetros

  • table_name: Obrigatório.

    O nome da tabela de destino. Crie essa tabela antes de carregar os dados. O schema da tabela, exceto as colunas de partição, deve corresponder ao formato dos dados externos.

  • pt_spec: Opcional.

    A partição da tabela de destino na qual os dados serão carregados. O formato é (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

  • external_location: Obrigatório.

    O diretório do OSS de onde os dados serão lidos. O formato é 'oss://<oss_endpoint>/<object>'. Para mais informações, consulte Access OSS by using endpoints and bucket domain names. Por padrão, o MaxCompute lê todos os arquivos nesse diretório.

  • StorageHandler: Obrigatório.

    Especifica o nome do manipulador de armazenamento integrado. Use com.aliyun.odps.CsvStorageHandler para arquivos CSV. Ele define como ler e gravar dados CSV. Forneça apenas o nome, pois o sistema cuida da lógica de implementação. O uso é o mesmo das tabelas externas do MaxCompute. Para mais informações, consulte Create an OSS external table.

  • Options: Opcional.

    Especifica parâmetros para a tabela externa. O SERDEPROPERTIES suporta as mesmas propriedades usadas para tabelas externas do MaxCompute. Para obter uma lista das propriedades suportadas, consulte Create an OSS external table.

Hologres

Clique para ver os detalhes dos parâmetros

  • table_name: Obrigatório.

    O nome da tabela de destino. Crie essa tabela antes de carregar os dados. O schema da tabela, exceto as colunas de partição, deve corresponder ao formato dos dados externos.

  • pt_spec: Opcional.

    A partição da tabela de destino na qual os dados serão carregados. O formato é (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

  • external_location: Obrigatório.

    A URL de conexão JDBC para o Hologres. O formato é '<jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/>'.

    • endpoint: Obrigatório.

      O nome de domínio de rede clássica da instância do Hologres. Para saber como obtê-lo, consulte Instance Details.

      Importante

      O MaxCompute pode se conectar ao Hologres apenas por meio de um nome de domínio de rede clássica. O MaxCompute não suporta conexões por meio de nomes de domínio de rede VPC.

    • port: Obrigatório.

      A porta de rede da instância do Hologres. Para saber como obtê-la, consulte Instance Details.

    • database: Obrigatório.

      O nome do banco de dados do Hologres ao qual o MaxCompute se conectará. Para mais informações sobre bancos de dados do Hologres, consulte CREATE DATABASE.

    • ApplicationName: Obrigatório.

      O valor padrão é MaxCompute e não exige modificação.

    • schema: Opcional.

      Omita esse parâmetro se o nome da tabela for exclusivo no banco de dados do Hologres ou se a tabela de origem estiver no schema padrão. Para mais informações sobre schemas, consulte CREATE SCHEMA.

    • holo_table_name: Obrigatório.

      O nome da tabela de origem do Hologres. Para mais informações sobre tabelas de origem do Hologres, consulte CREATE TABLE.

  • StorageHandler: Obrigatório.

    Define como consultar a tabela externa do Hologres. Esse valor é fixo como com.aliyun.odps.jdbc.JdbcStorageHandler.

  • Options: Obrigatório.

    Especifica parâmetros relacionados à tabela externa. As propriedades suportadas pelo SERDEPROPERTIES são as mesmas das tabelas externas do MaxCompute.

    • mcfed.mapreduce.jdbc.driver.class: Obrigatório.

      Especifica o driver para a conexão com o banco de dados do Hologres. O valor é fixo em org.postgresql.Driver.

    • odps.federation.jdbc.target.db.type: Obrigatório.

      Especifica o tipo de banco de dados ao qual se conectar. O valor é fixo em holo.

    • odps.federation.jdbc.colmapping: Opcional.

      Especifica o mapeamento de colunas entre a tabela externa do MaxCompute e a tabela de origem do Hologres. Use esse parâmetro se precisar mapear apenas um subconjunto de colunas ou se os nomes das colunas forem diferentes.

      • Se não configurar esse parâmetro, as colunas serão mapeadas por nome.

      • Se configurar esse parâmetro, mas especificar o mapeamento apenas para um subconjunto de colunas, as colunas restantes serão mapeadas por nome. O sistema relatará um erro se quaisquer colunas não mapeadas tiverem nomes ou tipos de dados incompatíveis.

      • Se configurar esse parâmetro e um nome de coluna no Hologres contiver letras maiúsculas, coloque o nome da coluna entre aspas duplas (""). O formato é: MaxCompute_column1:"Hologres_column1"[,MaxCompute_column2:"Hologres_column2",...].

        Nota

        A tabela de origem do Hologres tem as colunas c bool, map_B string, a bigint. A tabela externa do Hologres tem as colunas a bigint, x string, c bool.

        Se você definir este parâmetro como 'x:"map_B"', os dados poderão ser mapeados e consultados com sucesso.

    • mcfed.mapreduce.jdbc.input.query: Opcional. Especifica uma consulta SQL personalizada para ler dados da tabela de origem do Hologres. O schema do conjunto de resultados da consulta (incluindo nomes de colunas e tipos de dados) deve corresponder ao schema da tabela externa do MaxCompute. Se usar aliases na consulta, eles devem corresponder aos nomes das colunas na tabela externa. O formato de select_sentence é SELECT xxx FROM <holo_database_name>.<holo_schema_name>.<holo_table_name>.

Exemplos

OSS

Este exemplo mostra como carregar dados com um extrator integrado (StorageHandler). O exemplo pressupõe que o MaxCompute e o OSS pertencem à mesma conta Alibaba Cloud e demonstra como carregar dados do arquivo vehicle.csv para o MaxCompute pela rede interna da Alibaba Cloud.

  1. Clique aqui para autorização em um clique.

  2. Salve o arquivo vehicle.csv no diretório mc-test/data_location/ em um bucket do OSS na região oss-cn-hangzhou e, em seguida, monte o caminho do diretório do OSS. Para mais informações sobre como criar um bucket do OSS, consulte Create a bucket.

    O caminho do diretório do OSS é montado com base nas informações de bucket, região e endpoint da seguinte forma:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/
  3. Faça login no cliente do MaxCompute client (odpscmd) para criar a tabela de destino ambulance_data_csv_load. Comando de exemplo:

    CREATE TABLE ambulance_data_csv_load (
    vehicleId INT,
    recordId INT,
    patientId INT,
    calls INT,
    locationLatitude DOUBLE,
    locationLongitude DOUBLE,
    recordTime STRING,
    direction STRING );
    
  4. Execute o comando load overwrite para carregar o arquivo vehicle.csv do OSS para a tabela de destino. Comando de exemplo:

    LOAD OVERWRITE TABLE ambulance_data_csv_load
    FROM
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/'
    STORED BY 'com.aliyun.odps.CsvStorageHandler'
    WITH SERDEPROPERTIES (
        -- The ARN of AliyunODPSDefaultRole. You can obtain it on the RAM role management page.
        'odps.properties.rolearn'='acs:ram::xxxxx:role/aliyunodpsdefaultrole',
        'odps.text.option.delimiter'=','
    );
    

    Para ver o ARN de uma função, consulte View a RAM role.

  5. Verifique os dados na tabela de destino ambulance_data_csv_load. Comando de exemplo:

    -- Enable a full table scan. This setting is valid only for the current session.
    set odps.sql.allow.fullscan=true;
    SELECT * FROM ambulance_data_csv_load;
    
    -- The following result is returned:
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitude | locationlongitude | recordtime | direction  |
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+
    | 1          | 1          | 51         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          |
    | 1          | 2          | 13         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE         |
    | 1          | 3          | 48         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE         |
    | 1          | 4          | 30         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | W          |
    | 1          | 5          | 47         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          |
    | 1          | 6          | 9          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          |
    | 1          | 7          | 53         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | N          |
    | 1          | 8          | 63         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | SW         |
    | 1          | 9          | 4          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE         |
    | 1          | 10         | 31         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | N          |
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+

Hologres

  1. Cenário

    Uma instância e um banco de dados do Hologres já foram criados, assim como uma tabela no banco de dados.

    Uma tabela externa do Hologres também foi criada no MaxCompute, permitindo a consulta dos dados na tabela do Hologres por meio dela.

    -- Query the Hologres external table:
    SELECT * FROM holo_ext;
    
    -- The following result is returned:
    +------------+------+
    | id         | name |
    +------------+------+
    | 1          | abc  |
    | 2          | ereg |
    +------------+------+
  2. O exemplo a seguir mostra como usar o comando LOAD para carregar dados dessa tabela do Hologres para uma tabela interna do MaxCompute.

    1. Crie uma tabela interna do MaxCompute.

      -- Create an internal table.
      CREATE TABLE from_holo(id BIGINT, name STRING);
    2. Use o comando LOAD para carregar dados no MaxCompute.

      -- Load data from the Hologres table into a MaxCompute internal table.
      LOAD INTO TABLE from_holo 
      FROM LOCATION 'jdbc:postgresql://hgprecn-cn-wwo3ft0l****-cn-beijing-internal.hologres.aliyuncs.com:80/<YOUR_HOLO_DB_NAME>?application_name=MaxCompute&currentSchema=public&useSSL=false&table=<YOUR_HOLOGRES_TABLE_NAME>/' 
      STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler' 
      WITH SERDEPROPERTIES (
        'odps.properties.rolearn'='acs:ram::18927322887*****:role/hologresrole',
        'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 
        'odps.federation.jdbc.target.db.type'='holo'
      );
      
  3. Consulte a tabela para conferir o resultado.

    SELECT * FROM from_holo;
    
    -- The following result is returned:
    +------------+------+
    | id         | name |
    +------------+------+
    | 2          | ereg |
    | 1          | abc  |
    +------------+------+

Other open-source formats

Carregar dados em outros formatos de código aberto

O tamanho de um único arquivo a ser carregado não pode exceder 3 GB. Se o arquivo for muito grande, divida-o antes de carregá-lo.

Sintaxe do comando

{LOAD OVERWRITE|INTO} TABLE <table_name> [PARTITION (<pt_spec>)]
FROM LOCATION <external_location>
[ROW FORMAT SERDE '<serde_class>'
  [WITH SERDEPROPERTIES (<Options>)]
]
STORED AS <file_format>;

Parâmetros

Clique para ver os detalhes dos parâmetros

  • table_name: Obrigatório.

    O nome da tabela de destino. Crie essa tabela antes de carregar os dados. O schema da tabela, exceto as colunas de partição, deve corresponder ao formato dos dados externos.

  • pt_spec: Opcional.

    A partição da tabela de destino na qual os dados serão carregados. O formato é (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

  • external_location: Obrigatório.

    O diretório do OSS de onde os dados serão lidos. O formato é 'oss://<oss_endpoint>/<object>'. Para mais informações, consulte Access OSS by using endpoints and bucket domain names. Por padrão, o MaxCompute lê todos os arquivos nesse diretório.

  • serde_class: Opcional.

    Omita esse parâmetro se usar o valor padrão. O uso é o mesmo das tabelas externas do MaxCompute. Para mais informações, consulte Create an OSS external table.

  • Options: Opcional.

    Omita esse parâmetro se usar o valor padrão. Especifica parâmetros para a tabela externa. O SERDEPROPERTIES suporta as mesmas propriedades das tabelas externas do MaxCompute. Para obter uma lista das propriedades suportadas, consulte Create an OSS external table.

  • file_format: Obrigatório.

    O formato do arquivo de dados a ser carregado, como ORC, PARQUET, RCFILE, SEQUENCEFILE ou TEXTFILE. O uso é o mesmo das tabelas externas do MaxCompute. Para mais informações, consulte Create an OSS external table.

Exemplos

Same account

Mesma titularidade de conta

Este exemplo mostra como carregar dados do arquivo vehicle.textfile para o MaxCompute pela rede interna da Alibaba Cloud.

Nota

Se o MaxCompute e o OSS pertencerem a contas Alibaba Cloud diferentes, consulte Authorization in STS mode.

  1. Clique aqui para autorização em um clique.

  2. Salve o arquivo vehicle.textfile no diretório mc-test/data_location/ em um bucket do OSS na região oss-cn-hangzhou e, em seguida, monte o caminho do diretório do OSS. Para mais informações sobre como criar um bucket do OSS, consulte Create a bucket.

    O caminho do diretório do OSS é montado com base nas informações de bucket, região e endpoint da seguinte forma:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/
  3. Faça login no cliente do MaxCompute client (odpscmd) para criar a tabela de destino ambulance_data_textfile_load_pt. Comando de exemplo:

    CREATE TABLE ambulance_data_textfile_load_pt (
      vehicleId STRING,
      recordId STRING,
      patientId STRING,
      calls STRING,
      locationLatitude STRING,
      locationLongitude STRING,
      recordTime STRING,
      direction STRING
    )
    PARTITIONED BY (
      ds STRING
    );
  4. Execute o comando load overwrite para carregar o arquivo vehicle.textfile do OSS para a tabela de destino. Comando de exemplo:

    LOAD OVERWRITE TABLE ambulance_data_textfile_load_pt PARTITION(ds='20200910')
    FROM
      LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/'
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    WITH SERDEPROPERTIES ('field.delim' = ',')
    STORED AS TEXTFILE;
  5. Verifique os dados na tabela de destino ambulance_data_textfile_load_pt. Comando de exemplo:

    -- Enable a full table scan. This setting is valid only for the current session.
    SET odps.sql.allow.fullscan=true;
    SELECT * FROM ambulance_data_textfile_load_pt;
    
    -- The following result is returned:
    +-----------+----------+-----------+-------+------------------+-------------------+----------------+-----------+----------+
    | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime     | direction | ds       |
    +-----------+----------+-----------+-------+------------------+-------------------+----------------+-----------+----------+
    | 1         | 1        | 51        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | S         | 20200910 |
    | 1         | 2        | 13        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE        | 20200910 |
    | 1         | 3        | 48        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE        | 20200910 |
    | 1         | 4        | 30        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | W         | 20200910 |
    | 1         | 5        | 47        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | S         | 20200910 |
    | 1         | 6        | 9         | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | S         | 20200910 |
    | 1         | 7        | 53        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | N         | 20200910 |
    | 1         | 8        | 63        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | SW        | 20200910 |
    | 1         | 9        | 4         | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE        | 20200910 |
    | 1         | 10       | 31        | 1     | 46.81006         | -92.08174         | 9/14/2014 0:00 | N         | 20200910 |
    +-----------+----------+-----------+-------+------------------+-------------------+----------------+-----------+----------+

Dynamic partitions

Carregar dados usando partições dinâmicas

Nota

Use partições dinâmicas para carregar dados quando os subdiretórios do OSS forem nomeados de acordo com pares chave-valor de partição, como ds=20200909/.

  1. Clique aqui para autorização em um clique.

  2. Salve os arquivos vehicle1.csv e vehicle2.csv nos diretórios mc-test/data_location/ds=20200909/ e mc-test/data_location/ds=20200910/ em um bucket do OSS na região oss-cn-hangzhou, respectivamente, e, em seguida, monte os caminhos do diretório do OSS. Para mais informações sobre como criar um bucket do OSS, consulte Create a bucket.

    Os caminhos do diretório do OSS são montados com base nas informações de bucket, região e endpoint da seguinte forma:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/ds=20200909/'
    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/ds=20200910/'
  3. Faça login no cliente do MaxCompute client (odpscmd) para criar a tabela de destino ambulance_data_csv_load_dynpt. Comando de exemplo:

    CREATE TABLE ambulance_data_csv_load_dynpt (
      vehicleId STRING,
      recordId STRING,
      patientId STRING,
      calls STRING,
      locationLatitude STRING,
      locationLongitude STRING,
      recordTime STRING,
      direction STRING
    )
    PARTITIONED BY (
      ds STRING
    );
  4. Execute o comando load overwrite para carregar os arquivos do OSS para a tabela de destino. Comando de exemplo:

    LOAD OVERWRITE TABLE ambulance_data_csv_load_dynpt PARTITION(ds)
    FROM
      LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/'
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    STORED AS TEXTFILE;
    
  5. Verifique os dados na tabela de destino ambulance_data_csv_load_dynpt. Comando de exemplo:

    -- Enable a full table scan. This setting is valid only for the current session.
    SET odps.sql.allow.fullscan=true;
    SELECT * FROM ambulance_data_csv_load_dynpt;
    
    -- The following result is returned:
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitude | locationlongitude | recordtime     | direction  | ds         |
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
    | 1          | 7          | 53         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | N          | 20200909   |
    | 1          | 8          | 63         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | SW         | 20200909   |
    | 1          | 9          | 4          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE         | 20200909   |
    | 1          | 10         | 31         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | N          | 20200909   |
    | 1          | 1          | 51         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20200910   |
    | 1          | 2          | 13         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE         | 20200910   |
    | 1          | 3          | 48         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | NE         | 20200910   |
    | 1          | 4          | 30         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | W          | 20200910   |
    | 1          | 5          | 47         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20200910   |
    | 1          | 6          | 9          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20200910   |
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+

Faturamento

O comando LOAD carrega dados externos no data warehouse. Embora não haja cobrança pelo volume de dados importados no modelo de pagamento conforme o uso ou por tarefas individuais no modelo de assinatura, todas as tarefas LOAD consomem recursos de computação do grupo de recursos.

Referências

Para exportar dados de um projeto do MaxCompute para um armazenamento externo, como OSS ou Hologres, para serem usados por outros mecanismos de computação, consulte UNLOAD.