すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:clickhouse-client を使用したデータインポート

最終更新日:Jan 07, 2026

このトピックでは、clickhouse-client ツールを使用してローカルファイルから ApsaraDB for ClickHouse にデータをインポートする方法について説明します。

前提条件

  • データベースアカウントを作成します。詳細については、「コミュニティ互換版クラスターのアカウント管理」および「Enterprise Edition クラスターのアカウント管理」をご参照ください。

  • クラスターのバージョンと同じかそれ以降のバージョンの clickhouse-client をインストールします。

    説明

    パブリックネットワーク経由でのデータインポートは低速です。大規模なデータセットやパフォーマンステストの場合は、内部ネットワーク経由でのデータインポートを推奨します。

    内部ネットワーク経由でデータをインポートするには:

    • Elastic Compute Service (ECS) インスタンスは、ApsaraDB for ClickHouse クラスターと同じ Virtual Private Cloud (VPC) 内にある必要があります。

    • VPC エンドポイントを使用して ClickHouse クラスターに接続します。

    • clickhouse-client ツールをインストールするために、ECS インスタンスでパブリックネットワークアクセスを有効にします:

  • clickhouse-client ツールをホストするサーバーの IP アドレスを ApsaraDB for ClickHouse のホワイトリストに追加します。詳細については、「ホワイトリストの設定」をご参照ください。

  • ソースファイルがサポートされている形式であること。

操作手順

このトピックでは、CSV ファイルから ApsaraDB for ClickHouse クラスターの分散テーブルにデータをインポートする方法の例を示します。実際には、ビジネス要件に合わせてパラメーターを変更してください。この例では、次の環境を使用します:

  • インポート先データベース:default

  • インポート先テーブル:test_tbl_distributed

  • ソースデータファイル:testData.csv

ステップ 1:データの準備

clickhouse-client のインストールディレクトリに、testData.csv という名前のファイルを作成し、次のデータを追加します。

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

ステップ 2:テーブルの作成

  1. データベースに接続します。

    DMS を使用して ClickHouse クラスターに接続できます。

    他のクライアントを使用している場合は、「データベースへの接続」をご参照ください。

  2. クラスターのエディションに基づいてテーブルを作成します。

    重要

    インポート先テーブルの列の順序とデータ型がソースファイルのデータと完全に一致しない場合、データインポートが失敗する可能性があります。インポートする前に、テーブルスキーマがファイルの構造に対応していることを必ず確認してください。

    Enterprise Edition クラスターではローカルテーブルの作成のみが必要ですが、コミュニティ互換版クラスターでは、環境と要件に基づいて分散テーブルを作成する必要がある場合があります。以下はステートメントの例です。テーブル作成構文の詳細については、「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;

    Enterprise Edition クラスターでテーブルを作成する際に、ON CLUSTER is not allowed for Replicated database というエラーが発生することがあります。これは古いマイナーバージョンにおける既知の問題です。この問題を修正するには、クラスターのマイナーエンジンバージョンをアップグレードしてください。

    コミュニティ互換版

    シングルレプリカクラスターとデュアルレプリカクラスターではエンジンが異なります。レプリカのタイプに基づいてエンジンを選択してください。

    重要

    デュアルレプリカ版のクラスターでテーブルを作成する場合、MergeTree ファミリーの Replicated テーブルエンジンを使用する必要があります。非レプリケートテーブルエンジンを使用すると、レプリカ間でデータが複製されず、データの不整合が発生する可能性があります。

    シングルレプリカ

    1. ローカルテーブルの作成

      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. (オプション) 分散テーブルの作成

      ローカルテーブルにのみデータをインポートする必要がある場合は、このステップをスキップできます。

      マルチノードクラスターがある場合は、分散テーブルを作成することを推奨します。

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

    デュアルレプリカ

    1. ローカルテーブルの作成

      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. (オプション) 分散テーブルの作成

      ローカルテーブルにのみデータをインポートする必要がある場合は、このステップをスキップできます。

      マルチノードクラスターがある場合は、分散テーブルを作成することを推奨します。

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

ステップ 3:データのインポート

clickhouse-client のインストールディレクトリで、次のコマンドを実行します。

データインポートを高速化するために、ソースファイルを複数の部分に分割し、複数のクライアントプロセスを実行して各部分を並行してインポートすることができます。

マルチノードクラスターがある場合は、分散テーブルにデータをインポートすることを推奨します。

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

パラメーター

説明

file_name

ソースファイルのパス。

host

パブリックエンドポイントまたは VPC エンドポイント。[クラスター情報] ページに表示されます。

clickhouse-client ツールが実行されている場所に基づいてエンドポイントを選択します:

  • ECS インスタンス:

    クラスターと同じ VPC 内の ECS:VPC エンドポイントを使用すると、データインポートが高速になります。

    異なる VPC 内の ECS:パブリックエンドポイントを使用します。

  • ECS 以外のサーバー:パブリックエンドポイントを使用します。

クラスターのパブリックエンドポイントを申請する方法の詳細については、「パブリックエンドポイントの申請またはリリース」をご参照ください。

port

クラスターの TCP ポート番号。[クラスター情報] ページに表示されます。

user

データベースアカウント。

password

データベースアカウントのパスワード。

table_name

インポート先テーブルの名前。分散テーブルを作成した場合は、分散テーブルの名前を指定します。

file_type

ソースデータファイルの形式。

ステップ 4:結果の検証

  1. クラスターに接続します。

  2. クエリ文を実行します。

    重要

    マルチノードのコミュニティ互換版クラスターでは、常に分散テーブルをクエリしてください。ローカルテーブルを直接クエリすると、単一ノードからの結果しか返されないため、データが不完全になります。

    SELECT * FROM test_tbl_local;

    次の結果が返されます。

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

サポートされているファイル形式

次の表に、サポートされている一般的なファイル形式を示します。

重要
  • ファイルの各行はテーブルの 1 行に対応し、ファイルの各列はテーブルの 1 列に対応します。

  • 以下の形式では、列名やデータ型を含むヘッダー行は解析時に無視されます。データは、ソースファイルのヘッダーではなく、インポート先テーブルの列の順序に基づいてインポートされます。

形式

要件

TabSeparated

  • データはテキストファイルに行単位で書き込まれ、列はタブで区切られます。

  • タブ、改行、バックスラッシュはエスケープする必要があります。対応するエスケープシーケンスは、それぞれ \t\n\\ です。

  • NULL 値は \N で表されます。

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

TabSeparatedWithNames

この形式は TabSeparated に似ていますが、最初の行に列名が含まれます。このヘッダー行は解析時に無視されます。

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

TabSeparatedWithNamesAndTypes

この形式は TabSeparated に似ていますが、最初の行に列名、2 行目にデータ型が含まれます。テキストが解析されるとき、最初の 2 行は無視されます。

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

CSV

  • データはファイルに行単位で書き込まれます。

  • 文字列内のダブルクォーテーションマーク (") をエスケープするには、2 つ連続したダブルクォーテーションマーク ("") を使用します。たとえば、テキスト "Hello, World!" を表すには、ファイルに ""Hello, World!"" と記述する必要があります。

  • 数値はダブルクォーテーションマークで囲まれません。

  • デフォルトの列区切り文字はカンマ (,) です。インポートコマンドで --format_csv_delimiter オプションを使用して、別の区切り文字を指定できます。たとえば、縦棒 (|) を区切り文字として使用するには、次のコマンドを実行します:

    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

この形式は CSV に似ていますが、最初の行に列名が含まれます。テキストが解析されるとき、最初の行は無視されます。

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

ファイル形式の詳細については、「入出力データの形式」をご参照ください。

関連ドキュメント

データ移行と同期ソリューションの詳細については、「データ移行と同期」をご参照ください。