Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 03, 2026

Este tema describe cómo utilizar DataX para exportar datos desde Tablestore hacia un archivo CSV local. Es posible exportar datos tanto de tablas de datos como de tablas de series temporales en Tablestore.

Contexto

DataX es una herramienta de sincronización de datos sin conexión y de código abierto que admite la transferencia de datos entre fuentes heterogéneas, incluidas MySQL, Oracle, HDFS, Hive y Tablestore.

Antes de comenzar, tenga en cuenta lo siguiente:

  • Nombres de archivos exportados: DataX añade un sufijo aleatorio a los nombres de los archivos CSV exportados (por ejemplo, output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce). Elimine manualmente este sufijo después de la exportación para obtener un archivo CSV estándar.

  • Costos de red: Si ejecuta DataX en una instancia de Elastic Compute Service (ECS), utilice un endpoint de VPC para evitar cargos por tráfico saliente a Internet y mejorar el rendimiento de la red.

Requisitos previos

  • Debe contar con el endpoint y el nombre de la instancia de Tablestore, así como con la información de la tabla de origen en Tablestore.

  • Debe haber creado un par de AccessKey para su cuenta de Alibaba Cloud o para un usuario de Resource Access Management (RAM). Para obtener más información, consulte Create an AccessKey.

    Importante

    Por motivos de seguridad, se recomienda acceder a Tablestore como usuario de RAM. Cree un usuario de RAM, asigne la política AliyunOTSFullAccess a dicho usuario y genere un par de AccessKey para él. Para obtener más información, consulte Access Tablestore with a RAM user's AccessKey pair.

Procedimiento

Nota

Los ejemplos de este tema utilizan instancias de ECS con Alibaba Cloud Linux 3.2104 LTS de 64 bits o Ubuntu 22.04 de 64 bits. Para obtener más información, consulte What is ECS?.

Paso 1: Instalación de dependencias

  1. Instale Python 2 o Python 3.

    Python 3 viene preinstalado en las instancias de ECS que ejecutan Alibaba Cloud Linux o Ubuntu. Para otros sistemas operativos, instale Python manualmente.

  2. Instale JDK 1.8 o posterior. Se recomienda JDK 1.8.

    Los siguientes comandos instalan JDK 1.8 en Alibaba Cloud Linux o Ubuntu. Para otros sistemas operativos, instale 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

Paso 2: Descarga de DataX

  1. Descargue el paquete de DataX.

    wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
  2. Extraiga el paquete.

    tar -zxvf datax.tar.gz

Para compilar DataX desde el código fuente, consulte la guía de instalación de DataX.

Paso 3: Creación de un archivo de configuración

  1. Vaya al directorio bin de DataX.

    cd datax/bin
  2. Cree un archivo de configuración.

    vi tablestore_to_csv.json

    A continuación se muestra el contenido del archivo de configuración para cada tipo de tabla. Modifique los parámetros según sus necesidades.

    Exportación de datos desde una tabla de datos

    Para obtener información sobre el esquema de la tabla de datos de origen denominada 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"
              }
            }
          }
        ]
      }
    }

    Exportación de datos desde una tabla de series temporales

    Para obtener información sobre el esquema de la tabla de series temporales de origen denominada 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"
              }
            }
          }
        ]
      }
    }
    • La siguiente tabla describe los parámetros de Tablestore Reader que debe modificar.

      Parámetro

      Aplicable a

      Descripción

      channel

      Ambos

      Número de hilos de lectura y escritura paralelos. Cada canal representa un hilo independiente. Aumentar este valor incrementa la concurrencia y el consumo de recursos.

      endpoint

      Ambos

      El endpoint de la instancia de Tablestore. Si accede a Tablestore desde una instancia de ECS, utilice un endpoint de VPC para evitar cargos por tráfico saliente, además de mejorar el rendimiento y la seguridad.

      accessId

      Ambos

      El AccessKey ID de su cuenta de Alibaba Cloud o usuario de RAM.

      accessKey

      Ambos

      El AccessKey secret de su cuenta de Alibaba Cloud o usuario de RAM.

      instanceName

      Ambos

      El nombre de la instancia de Tablestore.

      tableName

      Ambos

      El nombre de la tabla de origen en Tablestore.

      column

      Ambos

      La matriz de columnas que se van a exportar.

      range

      Tabla de datos

      El rango de clave primaria que se va a leer. Las matrices begin y end especifican un valor por cada columna de clave primaria. El intervalo es cerrado por la izquierda y abierto por la derecha. Utilice INF_MIN (infinito negativo) e INF_MAX (infinito positivo) para leer la tabla completa. El número de columnas en un punto virtual debe coincidir con el de la clave primaria. Este parámetro es opcional; el valor predeterminado lee desde infinito negativo.

      measurementName

      Tabla de series temporales

      El nombre de la métrica de la serie temporal que se va a leer. Si no se establece, se leen todos los datos de la tabla.

      timeRange

      Tabla de series temporales

      El intervalo de marcas de tiempo que se va a leer, en milisegundos. El intervalo es cerrado por la izquierda y abierto por la derecha. Este parámetro es opcional; el valor predeterminado lee todas las versiones.

    • La siguiente tabla describe los parámetros de TxtFileWriter que debe modificar.

      Parámetro

      Descripción

      path

      El directorio local donde se guarda el archivo exportado.

      fileName

      El nombre base del archivo exportado, incluida la extensión. Ejemplo: output.csv.

      writeMode

      Define cómo maneja TxtFileWriter los archivos existentes antes de escribir. Valores válidos:

      • truncate: elimina todos los archivos con el prefijo del valor fileName en el directorio de destino antes de escribir.

      • append: escribe directamente en el archivo sin procesamiento previo, lo que garantiza que no haya conflictos de nombres.

      • nonConflict: reporta un error y cancela la operación si ya existe un archivo con el prefijo del valor fileName en el directorio.

      fileFormat

      El formato del archivo de salida. Valores válidos: csv y text.

Paso 4: Ejecución del trabajo de DataX

  1. Ejecute el trabajo de exportación.

    python3 datax.py tablestore_to_csv.json

    Una vez finalizado el trabajo, se imprime un resumen:

    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. Compruebe el resultado de la exportación.

    Revise el directorio de salida (por ejemplo, /tmp/export/) para confirmar el archivo exportado. El nombre del archivo incluye un sufijo aleatorio:

    output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce

    Para previsualizar el contenido del archivo, ejecute:

    head -5 output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce

    La salida será similar a la siguiente:

    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

    Elimine el sufijo para obtener un nombre de archivo CSV estándar:

    mv output.csv__d737aec2_c9e3_4489_a5d7_361f44c998ce output.csv
    Nota

    DataX añade un sufijo aleatorio para distinguir los archivos escritos por hilos paralelos. Elimine dicho sufijo para obtener un nombre de archivo CSV estándar.

Apéndice: Tablas de origen de ejemplo

Apéndice 1: Tabla de datos

La tabla de datos de ejemplo se denomina orders. La siguiente tabla describe el esquema de dicha tabla.

Nombre del campo

Tipo

Descripción

order_id (columna de clave primaria)

String

El identificador del pedido.

user_id

String

El identificador del usuario.

sku_id

String

El identificador del producto.

price

Double

El precio unitario de los productos adquiridos.

num

Integer

La cantidad de productos adquiridos.

total_price

Double

El precio total del pedido.

order_status

String

El estado del pedido.

create_time

String

La fecha y hora de creación del pedido.

modified_time

String

La fecha y hora de la última modificación del pedido.

Apéndice 2: Tabla de series temporales

La tabla de series temporales de ejemplo se denomina vehicles_timeseriesdata. La siguiente tabla describe el esquema de dicha tabla.

Nombre del campo

Tipo

Descripción

_m_name

String

El nombre de la magnitud física o métrica de los datos en la serie temporal.

_data_source

String

El identificador del origen de datos de la serie temporal. Este campo puede dejarse en blanco.

_tags

String

Las etiquetas de la serie temporal.

_time

Integer

La fecha y hora en que se reportan los datos.

vin_id

String

El número de identificación vehicular (VIN) del vehículo.

mfrs

String

El fabricante.

model

String

El modelo del vehículo.

speed

Double

La velocidad actual del vehículo.

gps

String

Las coordenadas GPS del vehículo en formato latitud,longitud, donde la latitud precede a la longitud.

mileage

Double

El kilometraje actual del vehículo.

emission

Double

El valor de emisión.