Utilice clickhouse-client para importar archivos locales a Alibaba Cloud ClickHouse.
Requisitos previos
Se creó una cuenta de base de datos. Manage accounts of Community-Compatible Edition clusters | Manage accounts of Enterprise Edition clusters.
-
clickhouse-client (versión ≥ versión de su clúster) está instalado. Instalar clickhouse-client.
NotaLas importaciones por red pública son lentas. Para conjuntos de datos grandes, utilice la red interna.
Instale clickhouse-client en una instancia ECS dentro de la misma VPC que su clúster de Alibaba Cloud ClickHouse y conéctese a través del endpoint de VPC.
La instancia ECS requiere acceso a la red pública para instalar clickhouse-client.
Si no ha adquirido una instancia ECS, seleccione Public IP Address al adquirir la instancia. Create an instance using the wizard.
Si su instancia ECS existente no tiene una IP pública, asocie una EIP a dicha instancia. Associate an Elastic IP Address (EIP).
La IP del servidor de clickhouse-client se agregó a la lista blanca de Alibaba Cloud ClickHouse. Set Whitelist.
El archivo origen utiliza un formato compatible. Supported file formats.
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
-
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.
-
Cree una tabla según la edición de su clúster.
ImportanteEl 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 databaseal 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.
ImportanteAl 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
-
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; -
(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
-
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; -
(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:
|
|
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
-
Conéctese al clúster.
-
Ejecute una sentencia de consulta.
ImportanteEn 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:
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 |
|
|
|
TabSeparatedWithNames |
Igual que TabSeparated, pero la primera fila contiene los nombres de las columnas (se ignoran durante el análisis). |
|
|
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. |
|
|
CSV |
|
|
|
CSVWithNames |
Igual que CSV, pero la primera fila contiene los nombres de las columnas (se ignoran durante el análisis). |
|
Referencia completa de formatos: Formatos para datos de entrada y salida.
Referencias
Otros métodos de migración: Data migration and synchronization.