Todos los productos
Search
Centro de documentos

ApsaraDB for ClickHouse:Importar datos mediante clickhouse-client

Última actualización: Sep 05, 2026

Utilice clickhouse-client para importar archivos locales a Alibaba Cloud ClickHouse.

Requisitos previos

Procedimiento

Este ejemplo importa un archivo CSV a la tabla test_tbl_distributed en la base de datos default de Alibaba Cloud ClickHouse. Reemplace los parámetros con sus valores reales:

  • Base de datos destino: default

  • Tabla destino: test_tbl_distributed

  • Archivo de datos origen: testData.csv

Paso 1: Preparar los datos

En el directorio de instalación de clickhouse-client, cree el archivo testData.csv con el siguiente contenido.

1,yang,32,shanghai,http://example.com
2,wang,22,beijing,http://example.com
3,xiao,23,shenzhen,http://example.com
4,jess,45,hangzhou,http://example.com
5,jack,14,shanghai,http://example.com
6,tomy,25,hangzhou,http://example.com
7,lucy,45,shanghai,http://example.com
8,tengyin,26,shanghai,http://example.com
9,wangli,27,shenzhen,http://example.com
10,xiaohua,37,shanghai,http://example.com

Paso 2: Crear una tabla

  1. Conéctese a la base de datos.

    Alibaba Cloud ClickHouse se integra con Data Management Service (DMS). Connect to a ClickHouse cluster using DMS.

    Otros clientes: Connect to a database.

  2. Cree una tabla según la edición de su clúster.

    Importante

    El orden de las columnas y los tipos de datos deben coincidir con los del archivo origen.

    Enterprise Edition solo requiere una tabla local. Community-Compatible Edition también puede necesitar una tabla distribuida. Consulte la referencia de sintaxis en CREATE TABLE.

    Enterprise edition

    CREATE TABLE test_tbl_local ON cluster default 
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = MergeTree()
    ORDER BY id;

    Si recibe el mensaje de error ON CLUSTER is not allowed for Replicated database al ejecutar esta sentencia, consulte upgrade the minor engine version para solucionar el error.

    Community-compatible edition

    Seleccione un motor según el tipo de réplica de su clúster.

    Importante

    Al crear una tabla en un clúster de doble réplica, debe utilizar un motor Replicated de la familia de motores MergeTree. Si crea una tabla con un motor no Replicated en un clúster de doble réplica, los datos no se pueden replicar entre réplicas, lo cual podría causar inconsistencia en los datos.

    Single-replica

    1. Cree una tabla local.

      CREATE TABLE test_tbl_local ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = MergeTree()
      ORDER BY id;
    2. (Opcional) Cree una tabla distribuida.

      Omita este paso si solo necesita una tabla local.

      Recomendado para clústeres multinodo.

      CREATE TABLE test_tbl_distributed ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = Distributed(default, default, test_tbl_local, rand());

    Two-replica

    1. Cree una tabla local.

      CREATE TABLE test_tbl_local ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')
      order by id;
    2. (Opcional) Cree una tabla distribuida.

      Omita este paso si solo necesita una tabla local.

      Recomendado para clústeres multinodo.

      CREATE TABLE test_tbl_distributed ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = Distributed(default, default, test_tbl_local, rand());

Paso 3: Importar datos

Ejecute el siguiente comando desde el directorio de instalación de clickhouse-client.

Para acelerar las importaciones, divida el archivo origen y ejecute varios clientes en paralelo.

Para clústeres multinodo, importe los datos a la tabla distribuida.

cat <file_name> | ./clickhouse-client --host=<host> --port=<port> --user=<user> --password=<password> --query="INSERT INTO <table_name> FORMAT <file_type>";

Parámetro

Descripción

file_name

Ruta del archivo origen.

host

Endpoint público o de VPC del clúster, disponible en la página Cluster Information.

Elija un endpoint según la ubicación de clickhouse-client:

  • En una instancia ECS de Alibaba Cloud:

    Si la instancia está en la misma VPC que el clúster de Alibaba Cloud ClickHouse: utilice el endpoint de VPC para importaciones más rápidas.

    Si la instancia está en una VPC diferente a la del clúster de Alibaba Cloud ClickHouse: utilice el endpoint público.

  • En un servidor distinto a una instancia ECS de Alibaba Cloud, utilice el endpoint público.

Apply for or release a public endpoint.

port

Puerto TCP, disponible en la página Cluster Information.

user

Cuenta de la base de datos.

password

Contraseña de la cuenta de la base de datos.

table_name

Nombre de la tabla destino. Para tablas distribuidas, utilice el nombre de la tabla distribuida.

file_type

Formato del archivo origen.

Paso 4: Comprobar el resultado de la importación

  1. Conéctese al clúster.

    Connect to a ClickHouse cluster using DMS.

  2. Ejecute una sentencia de consulta.

    Importante

    En clústeres multinodo de Community-Compatible Edition, consulte la tabla distribuida para ver todos los datos. Una tabla local solo devuelve datos de un nodo.

    SELECT * FROM test_tbl_local; 

    Salida esperada:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1            | yang                | 32            | shanghai       | http://example.com   |
    | 2            | wang                | 22            | beijing        | http://example.com   |
    | 3            | xiao                | 23            | shenzhen       | http://example.com   |
    | 4            | jess                | 45            | hangzhou       | http://example.com   |
    | 5            | jack                | 14            | shanghai       | http://example.com   |
    | 6            | tomy                | 25            | hangzhou       | http://example.com   |
    | 7            | lucy                | 45            | shanghai       | http://example.com   |
    | 8            | tengyin             | 26            | shanghai       | http://example.com   |
    | 9            | wangli              | 27            | shenzhen       | http://example.com   |
    | 10           | xiaohua             | 37            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+

Formatos de archivo compatibles

Formatos de archivo comunes compatibles:

Importante
  • Cada línea representa una fila. El orden de las columnas debe coincidir con la definición de la tabla.

  • En formatos con encabezados, las filas de encabezado se ignoran. La importación se basa en el orden de las columnas, no en los nombres ni en los tipos de los encabezados.

Formato

Requisitos de texto

Ejemplo

TabSeparated

  • Una fila por línea, columnas separadas por tabuladores.

  • Escape tabuladores, saltos de línea y barras invertidas como \t, \n y \\, respectivamente.

  • NULL se representa mediante \N.

John\t28\tSoftware Engineer\n
Alice\t32\tData Analyst\n
Bob\t25\tProduct Manager\n

TabSeparatedWithNames

Igual que TabSeparated, pero la primera fila contiene los nombres de las columnas (se ignoran durante el análisis).

Name\tAge\tOccupation\n
John\t28\tSoftware Engineer\n
Alice\t32\tData Analyst\n
Bob\t25\tProduct Manager\n

TabSeparatedWithNamesAndTypes

Igual que TabSeparated, pero la primera fila contiene los nombres de las columnas y la segunda fila contiene los tipos de datos. Ambas filas se ignoran durante el análisis.

Name\tAge\tOccupation\n
String\tUInt16\tString\n
John\t28\tSoftware Engineer\n
Alice\t32\tData Analyst\n
Bob\t25\tProduct Manager\n

CSV

  • Una fila por línea.

  • Escape las comillas dobles duplicándolas. Ejemplo: "Hello, World!" se convierte en ""Hello, World!"".

  • Los valores numéricos no llevan comillas.

  • El delimitador predeterminado es ,. Utilice --format_csv_delimiter para especificar un delimitador diferente. Ejemplo con delimitador de barra vertical:

    cat testData.csv | ./clickhouse-client --format_csv_delimiter="|" --host=cc-bp163l724nkf8****.clickhouse.ads.aliyuncs.com --port=3306 --user=test --password=123456Aa --query="INSERT INTO test_tbl_distributed FORMAT CSV";
John,28,Software Engineer
Alice,32,Data Analyst
Bob,25,Product Manager

CSVWithNames

Igual que CSV, pero la primera fila contiene los nombres de las columnas (se ignoran durante el análisis).

id,name,age,city,access_url
1,yang,32,shanghai,http://example.com
2,wang,22,beijing,http://example.com
3,xiao,23,shenzhen,http://example.com

Referencia completa de formatos: Formatos para datos de entrada y salida.

Referencias

Otros métodos de migración: Data migration and synchronization.