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

ApsaraDB for ClickHouse:外部テーブルを使用した OSS データへのアクセス

最終更新日:Dec 31, 2025

このトピックでは、ApsaraDB for ClickHouse を使用して Alibaba Cloud Object Storage Service (OSS) のデータをクエリする方法について説明します。また、OSS にデータを書き込む方法、または ClickHouse から OSS にデータをエクスポートする方法についても説明します。

前提条件

  • OSS の要件:

    • OSS サービスがアクティブ化されていること。詳細については、「OSS のアクティブ化」をご参照ください。

    • OSS へのアクセスに使用する Resource Access Management (RAM) ユーザーが、OSS オブジェクトに対する読み取りおよび書き込み権限を持っていること。詳細については、「権限とアクセスの制御の概要」をご参照ください。

  • クラスターの要件:

    データベースアカウントが作成されていること。詳細については、「アカウント管理」をご参照ください。

事前準備

  1. OSS バケットの作成。詳細については、「コンソールでのバケット作成」をご参照ください。

    重要

    OSS バケットが、ご利用の ApsaraDB for ClickHouse クラスターと同じリージョンにあることを確認してください。

    このトピックでは、`ck-test-oss` という名前のバケットを例として使用します。

  2. ファイルをアップロードします。

    このトピックでは、test.csv ファイルを例として使用します。開始する前に、このファイルを OSS にアップロードしてください。OSS にアップロードされたファイルはオブジェクトと呼ばれます。詳細については、「コンソールを使用したオブジェクトのアップロード」をご参照ください。

    すでに OSS にデータがある場合は、そのデータが ApsaraDB for ClickHouse でアクセス可能なファイル形式であることを確認してください。Protobuf と CapnProto を除くすべての形式がサポートされています。詳細については、「ClickHouse がサポートするファイル形式」をご参照ください。

OSS データのクエリ

方法1:OSS 外部テーブルの使用

Enterprise Edition または Community-compatible Edition v22.8 以降

  1. データベースへのログイン

    1. ApsaraDB for ClickHouse コンソールにログインします。

    2. クラスターリスト ページで、Community Edition インスタンスのリスト タブまたは Enterprise Edition インスタンスのリスト タブを選択し、対象クラスターの ID をクリックします。

    3. クラスター情報 ページで、右上の ログインデータベース をクリックします。

    4. [インスタンスにログイン] ダイアログボックスで、データベースアカウントとパスワードを入力し、[ログイン] をクリックします。

  2. OSS 外部テーブルの作成

    OSS 外部テーブルは ApsaraDB for ClickHouse の特殊なテーブルタイプで、データをローカルストレージにインポートすることなく、OSS に保存されているファイルを直接クエリできます。この機能により、ストレージとコンピューティングが分離されます。

    テーブルを作成するための構文は次のとおりです。

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

    パラメーター:

    パラメーター名

    説明

    table_name

    テーブル名。

    oss_test_tb

    col_name1,col_name2

    列名。

    user_name

    col_type1,col_type2

    列の型。

    重要

    OSS 外部テーブルの構造は、OSS データと一致している必要があります。

    String

    bucket-name

    OSS バケットの名前。

    ck-test-oss

    oss-endpoint

    このエンドポイントは、VPC 内の ECS インスタンスへのプライベートネットワークアクセスを提供します。詳細については、「リージョンとエンドポイント」をご参照ください。

    重要

    OSS バケットとご利用の ApsaraDB for ClickHouse クラスターが同じリージョンにあることを確認してください。

    oss-cn-hangzhou-internal.aliyuncs.com

    file-name

    OSS バケット内のオブジェクトの名前。

    test.csv

    access-key-id

    OSS データへのアクセスに使用される RAM ユーザーの AccessKey ID。

    yourAccessKeyID

    access-key-secret

    OSS データへのアクセスに使用される RAM ユーザーの AccessKey Secret。

    既存の AccessKey を使用するか、新しい AccessKey を作成します。詳細については、「AccessKey の作成」をご参照ください。

    重要

    セキュリティ上の脅威を軽減するため、AccessKey Secret は作成時にのみ表示され、後から取得することはできません。安全な場所に保管してください。

    yourAccessKeySecret

    file-format-name

    ファイル形式

    重要

    このパラメーターは、「ClickHouse がサポートするファイル形式」に記載されているとおりに正確に指定する必要があります。名前は大文字と小文字が区別されます。

    CSV

    例:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')
  3. OSS データのクエリ

    SELECT * FROM oss_test_tb;

    結果は次のとおりです。

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Community-compatible Edition v21.8 以前

  1. データベースへのログイン

    1. ApsaraDB for ClickHouse コンソールにログインします。

    2. クラスターリスト ページで、Community Edition インスタンスのリスト タブをクリックし、対象クラスターの ID をクリックします。

    3. クラスター情報 ページで、右上の ログインデータベース をクリックします。

    4. [インスタンスにログイン] ダイアログボックスで、データベースアカウントとパスワードを入力し、[ログイン] をクリックします。

  2. OSS 外部テーブルの作成

    テーブルを作成するための構文は次のとおりです。

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

    パラメーター:

    パラメーター名

    説明

    table_name

    テーブル名。

    oss_test_tb

    col_name1,col_name2

    列名。

    user_name

    col_type1,col_type2

    列の型。

    重要

    OSS 外部テーブルの構造は、OSS データと一致している必要があります。

    String

    oss-endpoint

    VPC プライベートネットワーク経由で ECS インスタンスにアクセスするために使用されるエンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

    重要

    OSS バケットとご利用の ApsaraDB for ClickHouse クラスターが同じリージョンにあることを確認してください。

    oss-cn-hangzhou-internal.aliyuncs.com

    access-key-id

    OSS データへのアクセスに使用される RAM ユーザーの AccessKey ID。

    yourAccessKeyID

    access-key-secret

    OSS データへのアクセスに使用される RAM ユーザーの AccessKey Secret。

    既存の AccessKey を使用するか、新しい AccessKey を作成します。詳細については、「AccessKey の作成」をご参照ください。

    重要

    セキュリティ上の脅威を軽減するため、AccessKey Secret は作成時にのみ表示され、後から取得することはできません。安全な場所に保管してください。

    yourAccessKeySecret

    oss-file-path

    オブジェクトのストレージパス。形式は通常 oss://<bucket-name>/<path-to-file> です。

    説明

    oss-file-path パラメーターは、ワイルドカード文字を使用したあいまい一致をサポートしています。詳細については、「ワイルドカード文字を使用した OSS ストレージパスのあいまい一致」をご参照ください。

    oss://ck-test-oss/test.csv

    file-format-name

    ファイル形式

    重要

    このパラメーターは、「ClickHouse がサポートするファイル形式」に記載されているとおりに正確に指定する必要があります。名前は大文字と小文字が区別されます。

    CSV

    例:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');
  3. OSS データのクエリ

    SELECT * FROM oss_test_tb;

    結果は次のとおりです。

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

方法2:テーブル関数の使用

Enterprise Edition または Community-compatible Edition v22.8 以降

  1. データベースへのログイン

    1. ApsaraDB for ClickHouse コンソールにログインします。

    2. クラスターリスト ページで、Community Edition インスタンスのリスト タブまたは Enterprise Edition インスタンスのリスト タブを選択し、対象クラスターの ID をクリックします。

    3. クラスター情報 ページで、右上の ログインデータベース をクリックします。

    4. [インスタンスにログイン] ダイアログボックスで、データベースアカウントとパスワードを入力し、[ログイン] をクリックします。

  2. テーブル関数を使用したデータのクエリ

    構文:

    SELECT * FROM oss('https://<bucket-name>.<oss-endpoint>/<file-name>','<access-key-id>', '<access-key-secret>', '<file-format-name>', '<col_name> <col_type>(,...)');

    パラメーターは、OSS 外部テーブルを作成する場合と同じです。詳細については、「パラメーター」をご参照ください。

    例:

    SELECT * FROM oss('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String')

    結果は次のとおりです。

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Community-compatible Edition v21.8 以前

  1. データベースへのログイン

    1. ApsaraDB for ClickHouse コンソールにログインします。

    2. クラスターリスト ページで、Community Edition インスタンスのリスト タブをクリックし、対象クラスターの ID をクリックします。

    3. クラスター情報 ページで、右上の ログインデータベース をクリックします。

    4. [インスタンスにログイン] ダイアログボックスで、データベースアカウントとパスワードを入力し、[ログイン] をクリックします。

  2. テーブル関数を使用したデータのクエリ

    構文:

    SELECT * FROM oss('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>', '<col_name> <col_type>(,...)');

    パラメーターは、OSS 外部テーブルを作成する場合と同じです。詳細については、「パラメーター」をご参照ください。

    例:

    SELECT * FROM oss('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String');

    結果は次のとおりです。

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

ClickHouse データの OSS へのエクスポートまたはデータ書き込み

注意事項

Enterprise Edition または Community-compatible Edition v22.8 以降

ClickHouse から OSS にデータをエクスポートする場合、または OSS に直接データを書き込む場合は、`s3_truncate_on_insert=1` または `s3_create_new_file_on_insert=1` のいずれかを設定する必要があります。これらのパラメーターを設定しない場合、または 0 に設定した場合、宛先パスにオブジェクトがすでに存在すると操作は失敗します。

  • s3_truncate_on_insert=1:ApsaraDB for ClickHouse は、データをエクスポートまたは書き込む前に、宛先パスにオブジェクトが存在するかどうかを確認します。

    • ファイルがすでに存在する場合、ClickHouse は新しいデータでファイルを上書きします

    • これは完全な上書きシナリオに適しています。この操作は元のデータを削除するため、慎重に使用してください

  • s3_create_new_file_on_insert=1:ClickHouse は、データをエクスポートまたは書き込む前に、宛先パスにオブジェクトが存在するかどうかを確認します。

    • 指定された名前のファイルがすでに存在する場合、ClickHouse は同じフォルダに新しいファイルを作成し、そこにデータを書き込みます。新しいファイル名は、オブジェクトファイル名 + 0から始まる増分番号 + ファイル形式名 の形式で命名されます。

      たとえば、OSS 外部テーブルの作成時に指定した宛先オブジェクトが test.csv の場合、最初の操作後の新しいオブジェクト名は test0.csv になります。2回目の操作後、新しいオブジェクト名は test1.csv になります。

    • この方法は、増分エクスポートまたは書き込みのシナリオに適しており、既存データの上書きを回避します。

Community-compatible Edition v21.8 以前

ClickHouse から OSS にデータをエクスポートする場合、または OSS に直接データを書き込む場合、使用される OSS オブジェクトは1つだけです。エクスポートまたは書き込まれたデータは、元のオブジェクトの内容を上書きしますこの操作は慎重に行ってください。

ステップ1:データベースへのログイン

  1. ApsaraDB for ClickHouse コンソールにログインします。

  2. クラスターリスト ページで、Community Edition インスタンスのリスト タブまたは Enterprise Edition インスタンスのリスト タブを選択し、対象クラスターの ID をクリックします。

  3. クラスター情報 ページで、右上の ログインデータベース をクリックします。

  4. [インスタンスにログイン] ダイアログボックスで、データベースアカウントとパスワードを入力し、[ログイン] をクリックします。

ステップ2:(任意) エクスポートするデータの準備

ClickHouse から OSS にデータをエクスポートする際に、エクスポートするデータがない場合は、次の手順に従ってデータを準備します。

エクスポートするデータがすでにある場合は、このステップをスキップできます。

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

    次の例では、Community-compatible Editionシングルレプリカクラスターにテーブルを作成します。Enterprise Edition または Community-compatible Editionデュアルレプリカクラスターにテーブルを作成するには、「テーブルの作成」をご参照ください。

     CREATE TABLE test_tb_local ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = MergeTree()
    ORDER BY id;
  2. サンプルデータを書き込みます。

    INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');

  3. (任意) データの表示

    次のステートメントを実行して、データが正常に書き込まれたことを確認できます。

    SELECT * FROM test_tb_local;

ステップ3:OSS 外部テーブルの作成

Enterprise Edition または Community-compatible Edition v22.8 以降

テーブルを作成するための構文は次のとおりです。

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

パラメーター:

パラメーター名

説明

table_name

テーブル名。

oss_test_tb

col_name1,col_name2

列名。

user_name

col_type1,col_type2

列の型。

重要

OSS 外部テーブルの構造は、OSS データと一致している必要があります。

String

bucket-name

OSS バケットの名前。

ck-test-oss

oss-endpoint

このエンドポイントは、VPC 内の ECS インスタンスへのプライベートネットワークアクセスを提供します。詳細については、「リージョンとエンドポイント」をご参照ください。

重要

OSS バケットとご利用の ApsaraDB for ClickHouse クラスターが同じリージョンにあることを確認してください。

oss-cn-hangzhou-internal.aliyuncs.com

file-name

OSS バケット内のオブジェクトの名前。

test.csv

access-key-id

OSS データへのアクセスに使用される RAM ユーザーの AccessKey ID。

yourAccessKeyID

access-key-secret

OSS データへのアクセスに使用される RAM ユーザーの AccessKey Secret。

既存の AccessKey を使用するか、新しい AccessKey を作成します。詳細については、「AccessKey の作成」をご参照ください。

重要

セキュリティ上の脅威を軽減するため、AccessKey Secret は作成時にのみ表示され、後から取得することはできません。安全な場所に保管してください。

yourAccessKeySecret

file-format-name

ファイル形式

重要

このパラメーターは、「ClickHouse がサポートするファイル形式」に記載されているとおりに正確に指定する必要があります。名前は大文字と小文字が区別されます。

CSV

例:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')

Community-compatible Edition v21.8 以前

テーブルを作成するための構文は次のとおりです。

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

パラメーター:

パラメーター名

説明

table_name

テーブル名。

oss_test_tb

col_name1,col_name2

列名。

user_name

col_type1,col_type2

列の型。

重要

OSS 外部テーブルの構造は、OSS データと一致している必要があります。

String

oss-endpoint

VPC プライベートネットワーク経由で ECS インスタンスにアクセスするために使用されるエンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

重要

OSS バケットとご利用の ApsaraDB for ClickHouse クラスターが同じリージョンにあることを確認してください。

oss-cn-hangzhou-internal.aliyuncs.com

access-key-id

OSS データへのアクセスに使用される RAM ユーザーの AccessKey ID。

yourAccessKeyID

access-key-secret

OSS データへのアクセスに使用される RAM ユーザーの AccessKey Secret。

既存の AccessKey を使用するか、新しい AccessKey を作成します。詳細については、「AccessKey の作成」をご参照ください。

重要

セキュリティ上の脅威を軽減するため、AccessKey Secret は作成時にのみ表示され、後から取得することはできません。安全な場所に保管してください。

yourAccessKeySecret

oss-file-path

オブジェクトのストレージパス。形式は通常 oss://<bucket-name>/<path-to-file> です。

説明

oss-file-path パラメーターは、ワイルドカード文字を使用したあいまい一致をサポートしています。詳細については、「ワイルドカード文字を使用した OSS ストレージパスのあいまい一致」をご参照ください。

oss://ck-test-oss/test.csv

file-format-name

ファイル形式

重要

このパラメーターは、「ClickHouse がサポートするファイル形式」に記載されているとおりに正確に指定する必要があります。名前は大文字と小文字が区別されます。

CSV

例:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');

ステップ4:OSS へのデータのエクスポートまたは書き込み

OSS にデータをエクスポートまたは書き込むには、OSS 外部テーブルと INSERT INTO ステートメントを使用します。構文の詳細については、「INSERT INTO」をご参照ください。次の例は、さまざまなシナリオのステートメントを示しています。

ClickHouse データのエクスポート

Enterprise Edition または Community-compatible Edition v22.8 以降

  • 完全上書きエクスポート (OSS にデータをエクスポートし、既存のデータを上書きします)。

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local;
  • 増分エクスポート (OSS にデータをエクスポートし、既存のデータを上書きしません)。

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 SELECT * FROM test_tb_local;

    この操作が完了すると、OSS バケットに新しいオブジェクトが作成されます。新しいオブジェクト名は、宛先オブジェクト名 + 0から始まる数値 (1ずつ増加) + オブジェクト形式名 のようになります。

    たとえば、OSS 外部テーブルの作成時に指定した宛先オブジェクトが test.csv の場合、新しいオブジェクト名は test0.csv になります。操作を再度実行すると、新しいオブジェクト名は test1.csv になります。OSS コンソールで新しいオブジェクトを表示できます。

Community-compatible Edition v21.8 以前

重要

ClickHouse データを OSS にエクスポートすると、既存のデータが上書きされます。この操作は慎重に行ってください。

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

データの書き込み

Enterprise Edition または Community-compatible Edition v22.8 以降

  • 新しいデータを OSS に書き込み、既存のデータを上書きします

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
  • 新しいデータを OSS に書き込み、既存のデータを上書きしません

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

    この操作が完了すると、OSS バケットに新しいオブジェクトが作成されます。新しいオブジェクト名は、宛先オブジェクト名 + 0から始まる数値 (1ずつ増加) + オブジェクト形式名 のようになります。

    たとえば、OSS 外部テーブルの作成時に指定した宛先オブジェクトが test.csv の場合、新しいオブジェクト名は test0.csv になります。操作を再度実行すると、新しいオブジェクト名は test1.csv になります。OSS コンソールで新しいオブジェクトを表示できます。

Community-compatible Edition v21.8 以前

重要

ClickHouse から OSS にデータを書き込むと、既存のデータが上書きされます。この操作は慎重に行ってください。

INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

関連操作:OSS データの ClickHouse へのインポート

OSS を使用してソースデータをステージングし、ClickHouse に移行する場合は、OSS から移行先の ClickHouse クラスターにデータをインポートする必要もあります。詳細については、「OSS からのデータインポート」をご参照ください。