Todos os produtos
Search
Central de documentação

Tablestore:Baixar dados do Tablestore para um arquivo CSV local usando o DataX

Última atualização: Jun 30, 2026

Este tópico descreve como usar o DataX para exportar dados do Tablestore para um arquivo CSV local. Você pode exportar dados de tabelas de dados e tabelas de séries temporais no Tablestore.

Contexto

O DataX é uma ferramenta de sincronização de dados offline de código aberto que suporta a transferência de dados entre fontes heterogêneas, incluindo MySQL, Oracle, HDFS, Hive e Tablestore.

Antes de começar, observe os seguintes pontos:

  • Nomes dos arquivos exportados: O DataX adiciona um sufixo aleatório aos nomes dos arquivos CSV exportados (por exemplo, output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce). Remova esse sufixo manualmente após a exportação para obter um arquivo CSV padrão.

  • Custos de rede: Se você executar o DataX em uma instância do Elastic Compute Service (ECS), use um endpoint de VPC para evitar taxas de tráfego de saída pela Internet e melhorar o desempenho da rede.

Pré-requisitos

  • Obtenha o endpoint e o nome da instância do Tablestore, além das informações da tabela de origem no Tablestore.

  • Crie um par de AccessKey para sua conta Alibaba Cloud ou para um usuário do Resource Access Management (RAM). Para mais informações, consulte Criar um AccessKey.

    Importante

    Por motivos de segurança, use o Tablestore como um usuário RAM. Crie um usuário RAM, anexe a política AliyunOTSFullAccess a ele e crie um par de AccessKey para esse usuário. Para mais informações, consulte Acessar o Tablestore com o par de AccessKey de um usuário RAM.

Procedimento

Nota

Os exemplos neste tópico usam instâncias ECS executando Alibaba Cloud Linux 3.2104 LTS 64 bits ou Ubuntu 22.04 64 bits. Para mais informações, consulte O que é o ECS?

Etapa 1: Instalar dependências

  1. Instale o Python 2 ou Python 3.

    O Python 3 vem pré-instalado em instâncias ECS com Alibaba Cloud Linux ou Ubuntu. Para outros sistemas operacionais, instale o Python manualmente.

  2. Instale o JDK 1.8 ou superior. Recomenda-se o JDK 1.8.

    Os comandos abaixo instalam o JDK 1.8 no Alibaba Cloud Linux ou Ubuntu. Em outros sistemas operacionais, instale o JDK manualmente.

    Alibaba Cloud Linux

    yum -y install java-1.8.0-openjdk-devel.x86_64

    Ubuntu

    apt update && apt upgrade
    apt install openjdk-8-jdk

Etapa 2: Baixar o DataX

  1. Baixe o pacote do DataX.

    wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
  2. Extraia o pacote.

    tar -zxvf datax.tar.gz

Para compilar o DataX a partir do código-fonte, consulte o guia de instalação do DataX.

Etapa 3: Criar um arquivo de configuração

  1. Acesse o diretório bin do DataX.

    cd datax/bin
  2. Crie um arquivo de configuração.

    vi tablestore_to_csv.json

    Os exemplos a seguir mostram o conteúdo do arquivo de configuração para cada tipo de tabela. Modifique os parâmetros conforme necessário.

    Exportar dados de uma tabela de dados

    Para informações sobre o esquema da tabela de dados de origem chamada orders , consulte Apêndice 1: Tabela de dados .
    {
      "job": {
        "setting": {
          "speed": {
            "channel": 1
          },
          "errorLimit": {
            "record": 0,
            "percentage": 0
          }
        },
        "content": [
          {
            "reader": {
              "name": "otsreader",
              "parameter": {
                "endpoint": "https://<YOUR-INSTANCE>.<YOUR-REGION>.ots.aliyuncs.com",
                "accessId": "<YOUR-ACCESS-KEY-ID>",
                "accessKey": "<YOUR-ACCESS-KEY-SECRET>",
                "instanceName": "<YOUR-INSTANCE>",
                "table": "orders",
                "range": {
                  "begin": [
                    {
                      "type": "INF_MIN"
                    }
                  ],
                  "end": [
                    {
                      "type": "INF_MAX"
                    }
                  ]
                },
                "column": [
                  {
                    "name": "order_id"
                  },
                  {
                    "name": "user_id"
                  },
                  {
                    "name": "sku_id"
                  },
                  {
                    "name": "price"
                  },
                  {
                    "name": "num"
                  },
                  {
                    "name": "total_price"
                  },
                  {
                    "name": "order_status"
                  },
                  {
                    "name": "create_time"
                  },
                  {
                    "name": "modified_time"
                  }
                ]
              }
            },
            "writer": {
              "name": "txtfilewriter",
              "parameter": {
                "path": "/tmp/export/",
                "fileName": "output.csv",
                "writeMode": "truncate",
                "fileFormat": "csv"
              }
            }
          }
        ]
      }
    }

    Exportar dados de uma tabela de séries temporais

    Para informações sobre o esquema da tabela de séries temporais de origem chamada vehicles_timeseriesdata , consulte Apêndice 2: Tabela de séries temporais .
    {
      "job": {
        "setting": {
          "speed": {
            "channel": 1
          }
        },
        "content": [
          {
            "reader": {
              "name": "otsreader",
              "parameter": {
                "endpoint": "https://<YOUR-INSTANCE>.<YOUR-REGION>.ots.aliyuncs.com",
                "accessId": "<YOUR-ACCESS-KEY-ID>",
                "accessKey": "<YOUR-ACCESS-KEY-SECRET>",
                "instanceName": "<YOUR-INSTANCE>",
                "table": "vehicles_timeseriesdata",
                "mode": "normal",
                "newVersion": "true",
                "isTimeseriesTable": "true",
                "measurementName": "measurement_1",
                "timeRange": {
                  "begin": 0,
                  "end": 1750000000000
                },
                "column": [
                  {
                    "name": "_m_name"
                  },
                  {
                    "name": "_data_source"
                  },
                  {
                    "name": "_tags"
                  },
                  {
                    "name": "_time"
                  },
                  {
                    "name": "vin_id",
                    "type": "STRING"
                  },
                  {
                    "name": "mfrs",
                    "type": "STRING"
                  },
                  {
                    "name": "model",
                    "type": "STRING"
                  },
                  {
                    "name": "speed",
                    "type": "DOUBLE"
                  },
                  {
                    "name": "gps",
                    "type": "STRING"
                  },
                  {
                    "name": "mileage",
                    "type": "DOUBLE"
                  },
                  {
                    "name": "emission",
                    "type": "DOUBLE"
                  }
                ]
              }
            },
            "writer": {
              "name": "txtfilewriter",
              "parameter": {
                "path": "/tmp/export/",
                "fileName": "output.csv",
                "writeMode": "truncate",
                "fileFormat": "csv"
              }
            }
          }
        ]
      }
    }
    • A tabela a seguir descreve os parâmetros do Tablestore Reader que você deve modificar.

      Parâmetro

      Aplica-se a

      Descrição

      channel

      Ambos

      Número de threads paralelas de leitura/gravação. Cada canal representa uma thread independente. Aumentar este valor eleva a concorrência e o consumo de recursos.

      endpoint

      Ambos

      O endpoint da instância do Tablestore. Ao acessar o Tablestore a partir de uma instância ECS, use um endpoint de VPC para evitar taxas de tráfego de saída, além de melhorar o desempenho e a segurança.

      accessId

      Ambos

      O AccessKey ID da sua conta Alibaba Cloud ou do usuário RAM.

      accessKey

      Ambos

      O AccessKey secret da sua conta Alibaba Cloud ou do usuário RAM.

      instanceName

      Ambos

      O nome da instância do Tablestore.

      tableName

      Ambos

      O nome da tabela de origem no Tablestore.

      column

      Ambos

      O array de colunas a serem exportadas.

      range

      Tabela de dados

      O intervalo de chave primária a ser lido. Os arrays begin e end especificam um valor para cada coluna de chave primária. O intervalo é fechado à esquerda e aberto à direita. Use INF_MIN (infinito negativo) e INF_MAX (infinito positivo) para ler a tabela inteira. A quantidade de colunas em um ponto virtual deve corresponder à da chave primária. Este parâmetro é opcional; o padrão lê a partir do infinito negativo.

      measurementName

      Tabela de séries temporais

      O nome da métrica da série temporal a ser lida. Se não for definido, todos os dados da tabela serão lidos.

      timeRange

      Tabela de séries temporais

      O intervalo de timestamp a ser lido, em milissegundos. O intervalo é fechado à esquerda e aberto à direita. Parâmetro opcional; o padrão lê todas as versões.

    • A tabela a seguir detalha os parâmetros do TxtFileWriter que você deve modificar.

      Parâmetro

      Descrição

      path

      Diretório local onde o arquivo exportado será salvo.

      fileName

      Nome base do arquivo exportado, incluindo a extensão. Exemplo: output.csv.

      writeMode

      Define como o TxtFileWriter trata arquivos existentes antes da gravação. Valores válidos:

      • truncate: exclui todos os arquivos com o prefixo igual ao valor de fileName no diretório de destino antes de gravar.

      • append: grava diretamente no arquivo sem pré-processamento, garantindo que não haja conflitos de nomes.

      • nonConflict: reporta um erro e aborta a operação caso já exista um arquivo com o prefixo definido em fileName no diretório.

      fileFormat

      Formato do arquivo de saída. Valores válidos: csv e text.

Etapa 4: Executar o job do DataX

  1. Execute o job de exportação.

    python3 datax.py tablestore_to_csv.json

    Após a conclusão do job, um resumo é exibido:

    2025-03-19 17:21:05.146 [job-0] INFO  StandAloneJobContainerCommunicator - Total 200000 records, 23086634 bytes | Speed 1.10MB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.222s |  All Task WaitReaderTime 18.392s | Percentage 100.00%
    2025-03-19 17:21:05.147 [job-0] INFO  JobContainer - 
    Task Start Time                    : 2025-03-19 17:20:43
    Task End Time                    : 2025-03-19 17:21:05
    Task Duration                    :                 21s
    Average Transfer Speed                    :            1.10MB/s
    Record Write Speed                    :          10000rec/s
    Total Records Read                    :              200000
    Failed Records                    :                   0
  2. Verifique o resultado da exportação.

    Confirme o arquivo exportado verificando o diretório de saída (por exemplo, /tmp/export/). O nome do arquivo inclui um sufixo aleatório:

    output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce

    Para visualizar uma prévia do conteúdo do arquivo, execute:

    head -5 output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce

    A saída será semelhante a:

    order_id,user_id,sku_id,price,num,total_price,order_status,create_time,modified_time
    ORD-001,USR-100,SKU-200,29.99,2,59.98,completed,2025-01-01 08:00:00,2025-01-02 10:00:00
    ORD-002,USR-101,SKU-201,49.99,1,49.99,pending,2025-01-02 09:00:00,2025-01-02 09:00:00

    Remova o sufixo para obter um nome de arquivo CSV padrão:

    mv output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce output.csv
    Nota

    O DataX adiciona um sufixo aleatório para diferenciar arquivos escritos por threads paralelas. Remova esse sufixo para obter um nome de arquivo CSV padrão.

Apêndice: Tabelas de origem de exemplo

Apêndice 1: Tabela de dados

A tabela de dados de exemplo chama-se orders. A tabela a seguir descreve o esquema dessa tabela de dados.

Nome do campo

Tipo

Descrição

order_id (coluna de chave primária)

String

Identificador do pedido.

user_id

String

Identificador do usuário.

sku_id

String

Identificador do produto.

price

Double

Preço unitário dos produtos adquiridos.

num

Integer

Quantidade de produtos adquiridos.

total_price

Double

Valor total do pedido.

order_status

String

Status atual do pedido.

create_time

String

Momento em que o pedido foi criado.

modified_time

String

Data da última modificação do pedido.

Apêndice 2: Tabela de séries temporais

A tabela de séries temporais de exemplo chama-se vehicles_timeseriesdata. A tabela a seguir apresenta o esquema desta tabela de séries temporais.

Nome do campo

Tipo

Descrição

_m_name

String

Nome da grandeza física ou métrica dos dados na série temporal.

_data_source

String

Identificador da fonte de dados da série temporal. Este campo pode ficar em branco.

_tags

String

Tags associadas à série temporal.

_time

Integer

Timestamp de quando o dado foi reportado.

vin_id

String

Número de identificação do veículo (VIN).

mfrs

String

Fabricante do veículo.

model

String

Modelo do veículo.

speed

Double

Velocidade atual do veículo.

gps

String

Coordenadas GPS do veículo no formato latitude,longitude, com a latitude precedendo a longitude.

mileage

Double

Quilometragem atual do veículo.

emission

Double

Valor da emissão.