Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:Importer des données à l'aide de clickhouse-client

Dernière mise à jour :Aug 26, 2026

Utilisez clickhouse-client pour importer des fichiers locaux dans Alibaba Cloud ClickHouse.

Prérequis

Procédure

Cet exemple importe un fichier CSV dans la table test_tbl_distributed de la base de données default de Alibaba Cloud ClickHouse. Remplacez les paramètres par vos valeurs réelles :

  • Base de données de destination : default

  • Table de destination : test_tbl_distributed

  • Fichier de données source : testData.csv

Étape 1 : Préparer les données

Dans le répertoire d'installation de clickhouse-client, créez le fichier testData.csv avec le contenu suivant.

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

Étape 2 : Créer une table

  1. Connectez-vous à la base de données.

    Alibaba Cloud ClickHouse s'intègre au service Data Management Service (DMS). Se connecter à un cluster ClickHouse à l'aide de DMS.

    Autres clients : Se connecter à une base de données.

  2. Créez une table en fonction de l'édition de votre cluster.

    Important

    L'ordre des colonnes et les types de données doivent correspondre à ceux du fichier source.

    Enterprise Edition nécessite uniquement une table locale. Community-Compatible Edition peut également nécessiter une table distribuée. Consultez la syntaxe de référence 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 vous recevez le message d'erreur ON CLUSTER is not allowed for Replicated database lors de l'exécution de cette instruction, vous pouvez mettre à niveau la version mineure du moteur pour corriger l'erreur.

    Community-compatible edition

    Sélectionnez un moteur en fonction du type de réplica de votre cluster.

    Important

    Lors de la création d'une table dans un cluster à deux réplicas, vous devez utiliser un moteur Replicated de la famille de moteurs MergeTree. Si vous créez une table avec un moteur non répliqué dans un cluster à deux réplicas, les données ne peuvent pas être répliquées entre les réplicas, ce qui peut entraîner une incohérence des données.

    Single-replica

    1. Créez une table locale.

      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. (Facultatif) Créez une table distribuée.

      Ignorez cette étape si vous avez uniquement besoin d'une table locale.

      Recommandé pour les clusters multi-nœuds.

      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. Créez une table locale.

      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. (Facultatif) Créez une table distribuée.

      Ignorez cette étape si vous avez uniquement besoin d'une table locale.

      Recommandé pour les clusters multi-nœuds.

      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());

Étape 3 : Importer les données

Exécutez la commande suivante depuis le répertoire d'installation de clickhouse-client.

Pour accélérer les imports, divisez le fichier source et exécutez plusieurs clients en parallèle.

Pour les clusters multi-nœuds, importez les données dans la table distribuée.

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

Paramètre

Description

file_name

Chemin d'accès au fichier source.

host

Endpoint public ou VPC du cluster, disponible sur la page Cluster Information.

Choisissez un endpoint en fonction de l'emplacement de clickhouse-client :

  • Sur une instance Alibaba Cloud ECS :

    Si l'instance se trouve dans le même VPC que le cluster Alibaba Cloud ClickHouse : utilisez l'endpoint VPC pour des imports plus rapides.

    Si l'instance se trouve dans un VPC différent de celui du cluster Alibaba Cloud ClickHouse : utilisez l'endpoint public.

  • Sur un serveur autre qu'une instance Alibaba Cloud ECS, utilisez l'endpoint public.

Demander ou libérer un endpoint public.

port

Port TCP, disponible sur la page Cluster Information.

user

Compte de base de données.

password

Mot de passe du compte de base de données.

table_name

Nom de la table de destination. Pour les tables distribuées, utilisez le nom de la table distribuée.

file_type

Format du fichier source.

Étape 4 : Vérifier le résultat de l'importation

  1. Connectez-vous au cluster.

    Se connecter à un cluster ClickHouse à l'aide de DMS.

  2. Exécutez une instruction de requête.

    Important

    Sur les clusters Community-Compatible Edition multi-nœuds, interrogez la table distribuée pour afficher toutes les données. Une table locale renvoie uniquement les données d'un seul nœud.

    SELECT * FROM test_tbl_local; 

    Sortie attendue :

    +--------------+---------------------+---------------+----------------+----------------------+
    | 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   |
    +--------------+---------------------+---------------+----------------+----------------------+

Formats de fichiers pris en charge

Formats de fichiers couramment pris en charge :

Important
  • Chaque ligne représente une ligne de données. L'ordre des colonnes doit correspondre à la définition de la table.

  • Pour les formats comportant des en-têtes, les lignes d'en-tête sont ignorées. L'importation repose sur l'ordre des colonnes, et non sur les noms ou les types d'en-tête.

Format

Exigences relatives au texte

Exemple

TabSeparated

  • Une ligne par ligne, colonnes séparées par des tabulations.

  • Échappez les tabulations, les sauts de ligne et les barres obliques inverses respectivement sous la forme \t, \n et \\.

  • NULL est représenté par \N.

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

TabSeparatedWithNames

Identique à TabSeparated, mais la première ligne contient les noms des colonnes (ignorés lors de l'analyse).

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

TabSeparatedWithNamesAndTypes

Identique à TabSeparated, mais la première ligne contient les noms des colonnes et la deuxième ligne les types de données. Les deux lignes sont ignorées lors de l'analyse.

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

CSV

  • Une ligne par ligne.

  • Échappez les guillemets doubles en les doublant. Exemple : "Hello, World!" devient ""Hello, World!"".

  • Les valeurs numériques ne sont pas mises entre guillemets.

  • Le délimiteur par défaut est ,. Utilisez --format_csv_delimiter pour spécifier un autre délimiteur. Exemple avec un délimiteur barre verticale :

    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

Identique à CSV, mais la première ligne contient les noms des colonnes (ignorés lors de l'analyse).

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

Référence complète des formats : Formats pour les données d'entrée et de sortie.

Références

Autres méthodes de migration : Migration et synchronisation des données.