Todos os produtos
Search
Central de documentação

Tablestore:Download Tablestore data to a local CSV file by using DataX

Última atualização: Sep 22, 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 de séries temporais do 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, como MySQL, Oracle, HDFS, Hive e Tablestore.

Antes de começar, observe o seguinte:

  • 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 para a Internet e melhorar o desempenho da rede.

Pré-requisitos

  • Obtenha o endpoint e o nome da instância do Tablestore, bem como as informações da tabela de origem no Tablestore.

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

    Importante

    Por questões de segurança, use o Tablestore como um usuário RAM. Crie um usuário RAM, anexe a política AliyunOTSFullAccess a esse usuário e crie um par de AccessKey para ele. Para mais informações, consulte Access Tablestore with a RAM user's AccessKey pair.

Procedimento

Nota

Os exemplos neste tópico usam instâncias do ECS que executam o Alibaba Cloud Linux 3.2104 LTS 64-bit ou o Ubuntu 22.04 64-bit. Para mais informações, consulte What is ECS?.

Etapa 1: Instale as dependências

  1. Instale o Python 2 ou o Python 3.

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

  2. Instale o JDK 1.8 ou posterior. O JDK 1.8 é o recomendado.

    Os comandos a seguir instalam o JDK 1.8 no Alibaba Cloud Linux ou no Ubuntu. Para 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: Baixe 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: Crie 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 as suas necessidades.

    Exporte dados de uma tabela de dados

    Para obter informações sobre o schema da tabela de dados de origem chamada orders , consulte Appendix 1: Data table .
    {
      "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"
              }
            }
          }
        ]
      }
    }

    Exporte dados de uma tabela de séries temporais

    Para obter informações sobre o schema da tabela de séries temporais de origem chamada vehicles_timeseriesdata , consulte Appendix 2: Time series table .
    {
      "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

      A quantidade de threads paralelas de leitura e gravação. Cada channel é uma thread independente. Aumentar esse valor eleva a simultaneidade e o consumo de recursos.

      endpoint

      Ambos

      O endpoint da instância do Tablestore. Se você acessar o Tablestore a partir de uma instância do ECS, use um endpoint de VPC para evitar taxas de tráfego de saída e 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 ser igual à de uma 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. Caso não seja definido, a leitura incluirá todos os dados da tabela.

      timeRange

      Tabela de séries temporais

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

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

      Parâmetro

      Descrição

      path

      O diretório local para salvar o arquivo exportado.

      fileName

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

      writeMode

      Como o TxtFileWriter lida com arquivos existentes antes da gravação. Valores válidos:

      • truncate: exclui todos os arquivos com o prefixo do valor de fileName no diretório de destino antes da gravação.

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

      • nonConflict: relata um erro e aborta a operação se já existir um arquivo com o prefixo do valor de fileName no diretório.

      fileFormat

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

Etapa 4: Execute 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, o sistema imprime um resumo:

    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.

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

    output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce

    Para visualizar o conteúdo do arquivo, execute:

    head -5 output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce

    A saída é 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 distinguir os arquivos gravados por threads paralelas. Remova o sufixo para obter um nome de arquivo CSV padrão.

Apêndice: Tabelas de origem de exemplo

Apêndice 1: Tabela de dados

O nome da tabela de dados de exemplo é orders. A tabela a seguir descreve o schema da tabela de dados.

Nome do campo

Tipo

Descrição

order_id (coluna de chave primária)

String

O ID do pedido.

user_id

String

O ID do usuário.

sku_id

String

O ID do product.

price

Double

O preço unitário dos products comprados.

num

Integer

A quantidade de products comprados.

total_price

Double

O valor total do pedido.

order_status

String

O status do pedido.

create_time

String

A data e a hora de criação do pedido.

modified_time

String

A data e a hora da última modificação do pedido.

Apêndice 2: Tabela de séries temporais

O nome da tabela de séries temporais de exemplo é vehicles_timeseriesdata. A tabela a seguir descreve o schema da tabela de séries temporais.

Nome do campo

Tipo

Descrição

_m_name

String

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

_data_source

String

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

_tags

String

As tags da série temporal.

_time

Integer

O momento em que os dados são relatados.

vin_id

String

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

mfrs

String

O fabricante.

model

String

O modelo do veículo.

speed

Double

A velocidade atual do veículo.

gps

String

As coordenadas de GPS do veículo no formato latitude,longitude, com a latitude precedendo a longitude.

mileage

Double

A quilometragem atual do veículo.

emission

Double

O valor de emissão.