Todos os produtos
Search
Central de documentação

MaxCompute:LOAD

Última atualização: Sep 08, 2026

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

Visão geral

O MaxCompute usa os comandos LOAD OVERWRITE ou LOAD INTO para importar dados em formato CSV ou outros formatos open-source de armazenamentos externos, como What is Hologres?, What is 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 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 a tabela ou partição antes de inserir 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 project do MaxCompute. Para obter instruções, consulte MaxCompute permissions.

  • Permissões de armazenamento externo

    • Permissões do OSS: conceda ao MaxCompute permissões de acesso ao OSS (leitura e listagem de objetos). 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 RAM, conceda as permissões necessárias e adicione a função à instância do Hologres. Para detalhes, consulte Create a Hologres external table (STS mode).

Outras restrições

  • O comando LOAD não oferece suporte a parâmetros de lista de permissões/lista de bloqueios.

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

  • Ao carregar dados do OSS:

    O schema da tabela particionada de destino (excluindo 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 carrega 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 em visualizar detalhes dos parâmetros

  • table_name: obrigatório.

    Nome da tabela de destino. Crie esta tabela antes de carregar os dados. O schema dela, excluindo as colunas de partição, deve corresponder ao formato dos dados externos.

  • pt_spec: opcional.

    Partição da tabela de destino onde os dados serão carregados. O formato é (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

  • external_location: obrigatório.

    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 neste 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. Basta fornecer o nome, pois o sistema gerencia a 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 nas tabelas externas do MaxCompute. Para obter uma lista das propriedades suportadas, consulte Create an OSS external table.

Hologres

Clique em visualizar detalhes dos parâmetros

  • table_name: obrigatório.

    Nome da tabela de destino. Crie esta tabela antes de carregar os dados. O schema dela, excluindo as colunas de partição, deve corresponder ao formato dos dados externos.

  • pt_spec: opcional.

    Partição da tabela de destino onde os dados serão carregados. O formato é (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

  • external_location: obrigatório.

    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 da rede clássica da instância do Hologres. Para saber como obtê-lo, consulte Instance Details.

      Importante

      O MaxCompute só se conecta ao Hologres por meio de um nome de domínio de rede clássica. Conexões que usam nome de domínio de rede VPC não são suportadas.

    • port: obrigatório.

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

    • database: obrigatório.

      Nome do banco de dados do Hologres ao qual 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 requer modificação.

    • schema: opcional.

      Você pode omitir este parâmetro se o nome da tabela for único no banco de dados do Hologres ou se a tabela de source estiver no schema padrão. Para mais informações sobre schemas, consulte CREATE SCHEMA.

    • holo_table_name: obrigatório.

      Nome da tabela de source do Hologres. Para mais informações sobre tabelas de source do Hologres, consulte CREATE TABLE.

  • StorageHandler: obrigatório.

    Define como consultar a tabela externa do Hologres. Este valor é fixo em 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 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 para conexão. 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 source do Hologres. Use este parâmetro se precisar mapear apenas um subconjunto de colunas ou se os nomes das colunas forem diferentes.

      • Se você não configure este parâmetro, as colunas serão mapeadas por nome.

      • Caso este parâmetro seja configurado, mas especifique o mapeamento para apenas um subconjunto de colunas, as colunas restantes serão mapeadas por nome. Um erro será reportado se quaisquer colunas não mapeadas tiverem nomes ou tipos de dados incompatíveis.

      • Se este parâmetro estiver configurado 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 source do Hologres possui as colunas c bool, map_B string, a bigint. A tabela externa do Hologres possui as colunas a bigint, x string, c bool.

        Se você defina 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 source 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 você usar alias 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 demonstra como carregar dados usando um extrator integrado (StorageHandler). Pressupõe-se que o MaxCompute e o OSS pertençam à mesma conta Alibaba Cloud e mostra como carregar dados do arquivo vehicle.csv para o MaxCompute pela rede interna da Alibaba Cloud.

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

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

    O caminho do diretório OSS é construído a partir das 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 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 na 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 visualize 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 foram criados, e uma tabela foi criada no banco de dados.

    Uma tabela externa do Hologres foi criada no MaxCompute. É possível consultar os dados na tabela do Hologres usando a tabela externa.

    -- 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 desta tabela do Hologres em 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 ver 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 open-source

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

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 em visualizar detalhes dos parâmetros

  • table_name: obrigatório.

    Nome da tabela de destino. Crie esta tabela antes de carregar os dados. O schema dela, excluindo as colunas de partição, deve corresponder ao formato dos dados externos.

  • pt_spec: opcional.

    Partição da tabela de destino onde os dados serão carregados. O formato é (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

  • external_location: obrigatório.

    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 neste diretório.

  • serde_class: opcional.

    Você pode omitir este 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.

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

  • file_format: obrigatório.

    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 diferentes da Alibaba Cloud, consulte Authorization in STS mode.

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

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

    O caminho do diretório OSS é construído a partir das 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 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 na 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 seus subdiretórios do OSS forem nomeados de acordo com pares chave-valor de partição, como ds=20200909/.

  1. Clique em aqui para autorização com 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/ de um bucket do OSS na região oss-cn-hangzhou, respectivamente, e construa os caminhos dos diretórios OSS. Para mais informações sobre como criar um bucket do OSS, consulte Create a bucket.

    Os caminhos dos diretórios OSS são construídos a partir das 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 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 na 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 de seu grupo de recursos.

Referências

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