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

ApsaraDB for ClickHouse:OSS 外部テーブルによる OSS データへのアクセス

最終更新日:Jul 18, 2026

ApsaraDB for ClickHouse を使用して、Alibaba Cloud Object Storage Service (OSS) 内のデータをクエリしたり、ClickHouse データを OSS にエクスポートしたりできます。

前提条件

  • OSS の要件:

    • OSS が有効になっている必要があります。詳細については、「OSS の有効化」をご参照ください。

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

  • クラスターの要件:

    データベースアカウントが必要です。詳細については、「アカウント管理」をご参照ください。

前提条件

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

    重要

    OSS バケットは、ご利用の ApsaraDB for ClickHouse クラスターと同じリージョンにある必要があります。

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

  2. OSS にオブジェクトをアップロードします。

    この例では、test.csv オブジェクトを使用します。このオブジェクトを OSS にアップロードしてください。詳細については、「オブジェクトのアップロード」をご参照ください。

    独自のオブジェクトを使用する場合は、そのフォーマットがApsaraDB for ClickHouseでサポートされていることを確認してください。ApsaraDB for ClickHouse は、Protobuf および CapnProto を除くすべてのフォーマットをサポートしています。詳細については、「ClickHouse でサポートされるファイルフォーマット」をご参照ください。

OSS データのクエリ

方法 1:OSS 外部テーブル

Enterprise Edition または Community-compatible Edition(22.8 以降)

  1. データベースにログインします。

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

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

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

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

  2. OSS 外部テーブルを作成します。

    ApsaraDB for ClickHouse の OSS 外部テーブルを使用すると、データをローカル記憶域にインポートせずに 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 バケットにアクセスするための内部エンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

    重要

    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 の漏洩リスクを軽減するため、AccessKey Secret は作成時のみ表示され、後から取得することはできません。AccessKey Secret は安全な場所に保管してください。

    yourAccessKeySecret

    file-format-name

    オブジェクトのファイル形式。

    重要

    値は、ClickHouse でサポートされている大文字小文字を区別するファイル形式である必要があります。詳細については、「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(21.8 以前)

  1. データベースにログインします。

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

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

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

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

  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 バケットにアクセスするための内部エンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

    重要

    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 の漏洩リスクを軽減するため、AccessKey Secret は作成時のみ表示され、後から取得することはできません。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 でサポートされている大文字小文字を区別するファイル形式である必要があります。詳細については、「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(22.8 以降)

  1. データベースにログインします。

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

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

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

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

  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(21.8 以前)

  1. データベースにログインします。

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

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

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

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

  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 22.8 以降

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 から開始し、1 ずつ増分)+ ファイル形式名。

      たとえば、対象ファイルが test.csv の場合、最初の操作では test0.csv が作成され、2 回目の操作では test1.csv が作成されます。

    • この方法は、増分エクスポートまたは書き込みに適しており、既存のデータを上書きしません。

Community-compatible Edition 21.8 以前

データをエクスポートまたは書き込む際は、単一の OSS ファイルのみが使用されます。新しいデータは、元のファイルの内容を上書きします。十分に注意してください。

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

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

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

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

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

手順 2: (オプション)エクスポート用のデータを準備する

ApsaraDB for 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 22.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 バケットにアクセスするための内部エンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

重要

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 の漏洩リスクを軽減するため、AccessKey Secret は作成時のみ表示され、後から取得することはできません。AccessKey Secret は安全な場所に保管してください。

yourAccessKeySecret

file-format-name

オブジェクトのファイル形式。

重要

値は、ClickHouse でサポートされている大文字小文字を区別するファイル形式である必要があります。詳細については、「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 互換エディション 21.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 バケットにアクセスするための内部エンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

重要

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 の漏洩リスクを軽減するため、AccessKey Secret は作成時のみ表示され、後から取得することはできません。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 でサポートされている大文字小文字を区別するファイル形式である必要があります。詳細については、「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 外部テーブルに対して INSERT INTO 文を使用して、OSS にデータをエクスポートまたは書き込みます。構文の詳細については、「INSERT INTO」をご参照ください。

ClickHouse データのエクスポート

Enterprise Edition または Community-compatible Edition 22.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 21.8 以前

重要

ApsaraDB for ClickHouse データを OSS にエクスポートすると、既存のデータが上書きされます。十分に注意してください。

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

データの書き込み

Enterprise Edition または Community-compatible Edition 22.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 21.8 以前

重要

ApsaraDB for ClickHouse から OSS にデータを書き込むと、既存のデータが上書きされます。十分に注意してください。

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

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

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