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

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

最終更新日:Aug 27, 2026

clickhouse-client を使用して、ローカルファイルを Alibaba Cloud ClickHouse にインポートします。

前提条件

  • データベースアカウントが作成されていること。 詳細については、「Community-Compatible Edition クラスターのアカウント管理」または「Enterprise Edition クラスターのアカウント管理」をご参照ください。

  • clickhouse-client (お使いのクラスターのバージョン以上) がインストールされていること。 詳細については、「clickhouse-client のインストール」をご参照ください。

    説明

    パブリックネットワーク経由のインポートは低速です。 大規模なデータセットの場合は、内部ネットワークを使用してください。

    お使いの Alibaba Cloud ClickHouse クラスターと同じ VPC 内の ECS インスタンスに clickhouse-client をインストールし、VPC エンドポイント経由で接続します。

    ECS インスタンスには、clickhouse-client をインストールするためのパブリックネットワークアクセスが必要です。

  • clickhouse-client サーバー IP が Alibaba Cloud ClickHouse のホワイトリストに追加されます。 ホワイトリストを設定する。

  • ソースファイルがサポートされている形式であること。 詳細については、「サポートされているファイル形式」をご参照ください。

操作手順

この例では、Alibaba Cloud ClickHouse の default データベースの test_tbl_distributed テーブルに CSV ファイルをインポートします。パラメーターを実際の値に置き換えてください:

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

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

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

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

clickhouse-client のインストールディレクトリに、次の内容で testData.csv を作成します。

1,田中,32,shanghai,http://example.com
2,佐藤,22,beijing,http://example.com
3,鈴木,23,shenzhen,http://example.com
4,高橋,45,hangzhou,http://example.com
5,伊藤,14,shanghai,http://example.com
6,渡辺,25,hangzhou,http://example.com
7,山本,45,shanghai,http://example.com
8,中村,26,shanghai,http://example.com
9,小林,27,shenzhen,http://example.com
10,加藤,37,shanghai,http://example.com

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

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

    Alibaba Cloud ClickHouse は Data Management Service (DMS) と統合されています。DMS を使用して ClickHouse クラスターに接続する。

    その他のクライアントについては、「データベースへの接続」をご参照ください。

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

    重要

    列の順序とデータ型は、ソースファイルと一致している必要があります。

    Enterprise Edition ではローカルテーブルのみが必要です。 Community-Compatible 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;

    このステートメントを実行したときにエラーメッセージ "ON CLUSTER is not allowed for Replicated database" が表示された場合は、「マイナーエンジンバージョンをアップグレード」してエラーを修正できます。

    Community-Compatible Edition

    クラスターのレプリカタイプに基づいてエンジンを選択します。

    重要

    デュアルレプリカクラスターでテーブルを作成する場合、MergeTree エンジンファミリーの Replicated エンジンを使用する必要があります。 デュアルレプリカクラスターで非 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 の場所に基づいてエンドポイントを選択します:

  • Alibaba Cloud ECS インスタンス上の場合:

    インスタンスが Alibaba Cloud ClickHouse クラスターと同じ VPC 内にある場合は、VPC エンドポイントを使用するとインポートが高速になります。

    インスタンスが Alibaba Cloud ClickHouse クラスターとは異なる VPC にある場合: パブリックエンドポイントを使用します。

  • Alibaba Cloud ECS インスタンス以外のサーバー上の場合、パブリックエンドポイントを使用してください。

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

port

TCP ポート。クラスター情報 ページで利用可能です。

user

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

password

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

table_name

インポート先のテーブル名。 分散テーブルの場合は、分散テーブル名を使用してください。

file_type

ソースファイルの形式。

ステップ 4: インポート結果の確認

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

    詳細については、「DMS を使用した ClickHouse クラスターへの接続」をご参照ください。

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

    重要

    マルチノードの Community-Compatible Edition クラスターでは、分散テーブルにクエリを実行してすべてのデータを表示してください。 ローカルテーブルは、1 つのノードからのデータのみを返します。

    SELECT * FROM test_tbl_distributed; 

    期待される出力:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1            | 田中                | 32            | shanghai       | http://example.com   |
    | 2            | 佐藤                | 22            | beijing        | http://example.com   |
    | 3            | 鈴木                | 23            | shenzhen       | http://example.com   |
    | 4            | 高橋                | 45            | hangzhou       | http://example.com   |
    | 5            | 伊藤                | 14            | shanghai       | http://example.com   |
    | 6            | 渡辺                | 25            | hangzhou       | http://example.com   |
    | 7            | 山本                | 45            | shanghai       | http://example.com   |
    | 8            | 中村                | 26            | shanghai       | http://example.com   |
    | 9            | 小林                | 27            | shenzhen       | http://example.com   |
    | 10           | 加藤                | 37            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+

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

一般的にサポートされているファイル形式:

重要
  • 各行は 1 つの行を表します。 列の順序はテーブル定義と一致している必要があります。

  • ヘッダー付きの形式の場合、ヘッダー行は無視されます。 インポートは列の順序に依存し、ヘッダー名や型には依存しません。

形式

テキスト要件

例

TabSeparated

  • 各行に 1 つのデータ行を記述し、列はタブで区切ります。

  • タブ、改行、バックスラッシュは、それぞれ \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 行目にデータ型が含まれます。 両方の行は解析時に無視されます。

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

CSV

  • 各行に 1 つのデータ行を記述します。

  • 二重引用符をエスケープするには、二重引用符を 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

完全な形式のリファレンスについては、「入出力データ形式」をご参照ください。

関連ドキュメント

その他の移行方法については、「データの移行と同期」をご参照ください。