Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:Accéder aux données OSS avec une table externe

Dernière mise à jour :Aug 12, 2026

Vous pouvez utiliser ApsaraDB for ClickHouse pour interroger des données dans Alibaba Cloud Object Storage Service (OSS) et exporter des données ClickHouse vers OSS.

Prérequis

Prérequis

  1. Créez un bucket OSS. Pour plus d'informations, consultez Créer des buckets dans la console.

    Important

    Le bucket OSS doit se trouver dans la même région que votre cluster ApsaraDB for ClickHouse.

    Cet exemple utilise un bucket nommé ck-test-oss.

  2. Importez un objet dans OSS.

    Cet exemple utilise l'objet test.csv. Importez cet objet dans OSS. Pour plus d'informations, consultez Importer des objets.

    Si vous utilisez votre propre objet, assurez-vous que son format est pris en charge par ApsaraDB for ClickHouse. ApsaraDB for ClickHouse prend en charge tous les formats sauf Protobuf et CapnProto. Pour plus d'informations, consultez Formats de fichiers pris en charge par ClickHouse.

Interroger des données OSS

Méthode 1 : Table externe OSS

Enterprise ou Community-compatible (22,8 ou ultérieur)

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

    1. Connectez-vous à la console ApsaraDB for ClickHouse.

    2. Sur la page Clusters, cliquez sur l'onglet Clusters of Community-compatible Edition ou Enterprise Edition Clusters, puis cliquez sur l'ID du cluster cible.

    3. Sur la page Cluster Information, cliquez sur Log On to Database dans le coin supérieur droit.

    4. Dans la boîte de dialogue Connect to Instance, saisissez le compte et le mot de passe de la base de données, puis cliquez sur Log On.

  2. Créez une table externe OSS.

    Une table externe OSS dans ApsaraDB for ClickHouse permet d'interroger directement les objets stockés dans OSS sans importer de données dans le stockage local, ce qui permet la séparation du stockage et du calcul.

    La syntaxe est la suivante :

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

    Le tableau suivant décrit les paramètres.

    Paramètre

    Description

    Exemple

    table_name

    Nom de la table.

    oss_test_tb

    col_name1,col_name2

    Noms des colonnes.

    user_name

    col_type1,col_type2

    Types de données des colonnes.

    Important

    Le schéma de la table externe OSS doit correspondre aux données présentes dans OSS.

    String

    bucket-name

    Nom du bucket OSS.

    ck-test-oss

    oss-endpoint

    Endpoint interne permettant d'accéder au bucket OSS depuis une instance ECS via un VPC. Pour plus d'informations, consultez Régions et endpoints.

    Important

    Assurez-vous que le bucket OSS et votre cluster ApsaraDB for ClickHouse se trouvent dans la même région.

    oss-cn-hangzhou-internal.aliyuncs.com

    file-name

    Nom de l'objet dans le bucket OSS.

    test.csv

    access-key-id

    AccessKey ID de l'utilisateur RAM pour accéder aux données OSS.

    yourAccessKeyID

    access-key-secret

    AccessKey secret de l'utilisateur RAM pour accéder aux données OSS.

    Vous pouvez utiliser un AccessKey existant ou en créer un nouveau. Pour plus d'informations, consultez Créer un AccessKey.

    Important

    Pour réduire le risque de fuite d'un AccessKey, l'AccessKey secret n'est affiché qu'au moment de sa création et ne peut pas être récupéré ultérieurement. Veillez à conserver l'AccessKey secret de manière sécurisée.

    yourAccessKeySecret

    file-format-name

    Format de l'objet.

    Important

    La valeur doit correspondre à un format de fichier pris en charge par ClickHouse, en respectant la casse. Pour plus d'informations, consultez formats de fichiers pris en charge par ClickHouse.

    CSV

    Exemple :

    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. Interrogez les données OSS.

    SELECT * FROM oss_test_tb;

    Le résultat suivant est retourné :

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

Community-compatible (21,8 ou antérieur)

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

    1. Connectez-vous à la console ApsaraDB for ClickHouse.

    2. Sur la page Clusters, cliquez sur l'onglet Clusters of Community-compatible Edition, puis cliquez sur l'ID du cluster cible.

    3. Sur la page Cluster Information, cliquez sur Log On to Database dans le coin supérieur droit.

    4. Dans la boîte de dialogue Connect to Instance, saisissez le compte et le mot de passe de la base de données, puis cliquez sur Log On.

  2. Créez une table externe OSS.

    La syntaxe est la suivante :

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

    Le tableau suivant décrit les paramètres.

    Paramètre

    Description

    Exemple

    table_name

    Nom de la table.

    oss_test_tb

    col_name1,col_name2

    Noms des colonnes.

    user_name

    col_type1,col_type2

    Types de données des colonnes.

    Important

    Le schéma de la table externe OSS doit correspondre aux données présentes dans OSS.

    String

    oss-endpoint

    Endpoint interne permettant d'accéder au bucket OSS depuis une instance ECS via un VPC. Pour plus d'informations, consultez Régions et endpoints.

    Important

    Assurez-vous que le bucket OSS et votre cluster ApsaraDB for ClickHouse se trouvent dans la même région.

    oss-cn-hangzhou-internal.aliyuncs.com

    access-key-id

    AccessKey ID de l'utilisateur RAM pour accéder aux données OSS.

    yourAccessKeyID

    access-key-secret

    AccessKey secret de l'utilisateur RAM pour accéder aux données OSS.

    Vous pouvez utiliser un AccessKey existant ou en créer un nouveau. Pour plus d'informations, consultez Créer un AccessKey.

    Important

    Pour réduire le risque de fuite d'un AccessKey, l'AccessKey secret n'est affiché qu'au moment de sa création et ne peut pas être récupéré ultérieurement. Veillez à conserver l'AccessKey secret de manière sécurisée.

    yourAccessKeySecret

    oss-file-path

    Chemin de stockage de l'objet, généralement au format oss://<bucket-name>/<path-to-file>.

    Remarque

    Le paramètre oss-file-path prend en charge la correspondance floue avec des caractères génériques. Pour plus d'informations, consultez Utiliser des caractères génériques pour la correspondance floue des chemins de stockage dans OSS.

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

    file-format-name

    Format de l'objet.

    Important

    La valeur doit correspondre à un format de fichier pris en charge par ClickHouse, en respectant la casse. Pour plus d'informations, consultez formats de fichiers pris en charge par ClickHouse.

    CSV

    Exemple :

    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. Interrogez les données OSS.

    SELECT * FROM oss_test_tb;

    Le résultat suivant est retourné :

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

Méthode 2 : Fonction de table

Enterprise ou Community-compatible (22,8 ou ultérieur)

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

    1. Connectez-vous à la console ApsaraDB for ClickHouse.

    2. Sur la page Clusters, cliquez sur l'onglet Clusters of Community-compatible Edition ou Enterprise Edition Clusters, puis cliquez sur l'ID du cluster cible.

    3. Sur la page Cluster Information, cliquez sur Log On to Database dans le coin supérieur droit.

    4. Dans la boîte de dialogue Connect to Instance, saisissez le compte et le mot de passe de la base de données, puis cliquez sur Log On.

  2. Utilisez une fonction de table pour interroger les données.

    La syntaxe est la suivante :

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

    Les paramètres sont identiques à ceux utilisés pour la création d'une table externe OSS. Pour plus de détails, consultez Description des paramètres.

    Exemple :

    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')

    Le résultat suivant est retourné :

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

Community-compatible (21,8 ou antérieur)

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

    1. Connectez-vous à la console ApsaraDB for ClickHouse.

    2. Sur la page Clusters, cliquez sur l'onglet Clusters of Community-compatible Edition, puis cliquez sur l'ID du cluster cible.

    3. Sur la page Cluster Information, cliquez sur Log On to Database dans le coin supérieur droit.

    4. Dans la boîte de dialogue Connect to Instance, saisissez le compte et le mot de passe de la base de données, puis cliquez sur Log On.

  2. Utilisez une fonction de table pour interroger les données.

    La syntaxe est la suivante :

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

    Les paramètres sont identiques à ceux utilisés pour la création d'une table externe OSS. Pour plus de détails, consultez Description des paramètres.

    Exemple :

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

    Le résultat suivant est retourné :

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

Exporter des données ClickHouse ou écrire des données dans OSS

Remarques d'utilisation

Enterprise Edition ou Community-compatible Edition 22,8 ou ultérieur

Lorsque vous exportez ou écrivez des données vers OSS, vous devez définir s3_truncate_on_insert=1 ou s3_create_new_file_on_insert=1. Si aucun de ces paramètres n'est défini ou si les deux sont définis sur 0, l'opération échoue lorsqu'un fichier existe déjà dans le chemin de destination.

  • s3_truncate_on_insert=1 : ApsaraDB for ClickHouse vérifie si un fichier existe dans le chemin de destination.

    • Si un fichier existe, ClickHouse écrase le fichier existant avec les nouvelles données.

    • Cette méthode convient aux exports ou écritures avec écrasement complet. Toutefois, faites preuve de prudence, car cette opération supprime les données d'origine.

  • s3_create_new_file_on_insert=1 : ClickHouse vérifie si un fichier existe dans le chemin de destination.

    • Si un fichier existe, ClickHouse crée un nouveau fichier dans le répertoire et y écrit les données. Le nouveau fichier est nommé selon le modèle suivant : nom du fichier cible + numéro de séquence (commençant à 0 et incrémenté de 1) + nom du format de fichier.

      Par exemple, si le fichier cible est test.csv, la première opération crée test0.csv et la seconde crée test1.csv.

    • Cette approche est recommandée pour les exports ou écritures incrémentiels afin d'éviter d'écraser les données existantes.

Community-compatible Edition 21,8 ou antérieur

Lors de l'exportation ou de l'écriture de données, un seul fichier OSS est utilisé. Les nouvelles données écrasent le contenu du fichier original. Faites preuve de prudence.

Étape 1 : Se connecter à la base de données

  1. Connectez-vous à la console ApsaraDB for ClickHouse.

  2. Sur la page Clusters, cliquez sur l'onglet Clusters of Community-compatible Edition ou Enterprise Edition Clusters, puis cliquez sur l'ID du cluster cible.

  3. Dans le coin supérieur droit de la page Cluster Information, cliquez sur Log On to Database.

  4. Dans la boîte de dialogue Connect to Instance, saisissez le compte et le mot de passe de la base de données, puis cliquez sur Log On.

Étape 2 : (Facultatif) Préparer les données à exporter

Si vous devez préparer des exemples de données à exporter d'ApsaraDB for ClickHouse vers OSS, suivez ces étapes.

Si vous disposez déjà de données à exporter, ignorez cette étape.

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

    Cet exemple crée une table dans un cluster Community-compatible Edition à réplica unique. Si votre cluster est un cluster à double réplica exécutant Enterprise Edition ou Community-compatible Edition, consultez Créer une table.

     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. Insérez des exemples de données.

    INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');
  3. (Facultatif) Consultez les données.

    Exécutez l'instruction suivante pour vérifier que les données ont bien été insérées.

    SELECT * FROM test_tb_local;

Étape 3 : Créer une table externe OSS

Enterprise Edition ou Community-compatible Edition 22,8 ou ultérieur

La syntaxe est la suivante :

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

Le tableau suivant décrit les paramètres.

Paramètre

Description

Exemple

table_name

Nom de la table.

oss_test_tb

col_name1,col_name2

Noms des colonnes.

user_name

col_type1,col_type2

Types de données des colonnes.

Important

Le schéma de la table externe OSS doit correspondre aux données présentes dans OSS.

String

bucket-name

Nom du bucket OSS.

ck-test-oss

oss-endpoint

Endpoint interne permettant d'accéder au bucket OSS depuis une instance ECS via un VPC. Pour plus d'informations, consultez Régions et endpoints.

Important

Assurez-vous que le bucket OSS et votre cluster ApsaraDB for ClickHouse se trouvent dans la même région.

oss-cn-hangzhou-internal.aliyuncs.com

file-name

Nom de l'objet dans le bucket OSS.

test.csv

access-key-id

AccessKey ID de l'utilisateur RAM pour accéder aux données OSS.

yourAccessKeyID

access-key-secret

AccessKey secret de l'utilisateur RAM pour accéder aux données OSS.

Vous pouvez utiliser un AccessKey existant ou en créer un nouveau. Pour plus d'informations, consultez Créer un AccessKey.

Important

Pour réduire le risque de fuite d'un AccessKey, l'AccessKey secret n'est affiché qu'au moment de sa création et ne peut pas être récupéré ultérieurement. Veillez à conserver l'AccessKey secret de manière sécurisée.

yourAccessKeySecret

file-format-name

Format de l'objet.

Important

La valeur doit correspondre à un format de fichier pris en charge par ClickHouse, en respectant la casse. Pour plus d'informations, consultez formats de fichiers pris en charge par ClickHouse.

CSV

Exemple :

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 21,8 ou antérieur

La syntaxe est la suivante :

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

Le tableau suivant décrit les paramètres.

Paramètre

Description

Exemple

table_name

Nom de la table.

oss_test_tb

col_name1,col_name2

Noms des colonnes.

user_name

col_type1,col_type2

Types de données des colonnes.

Important

Le schéma de la table externe OSS doit correspondre aux données présentes dans OSS.

String

oss-endpoint

Endpoint interne permettant d'accéder au bucket OSS depuis une instance ECS via un VPC. Pour plus d'informations, consultez Régions et endpoints.

Important

Assurez-vous que le bucket OSS et votre cluster ApsaraDB for ClickHouse se trouvent dans la même région.

oss-cn-hangzhou-internal.aliyuncs.com

access-key-id

AccessKey ID de l'utilisateur RAM pour accéder aux données OSS.

yourAccessKeyID

access-key-secret

AccessKey secret de l'utilisateur RAM pour accéder aux données OSS.

Vous pouvez utiliser un AccessKey existant ou en créer un nouveau. Pour plus d'informations, consultez Créer un AccessKey.

Important

Pour réduire le risque de fuite d'un AccessKey, l'AccessKey secret n'est affiché qu'au moment de sa création et ne peut pas être récupéré ultérieurement. Veillez à conserver l'AccessKey secret de manière sécurisée.

yourAccessKeySecret

oss-file-path

Chemin de stockage de l'objet, généralement au format oss://<bucket-name>/<path-to-file>.

Remarque

Le paramètre oss-file-path prend en charge la correspondance floue avec des caractères génériques. Pour plus d'informations, consultez Utiliser des caractères génériques pour la correspondance floue des chemins de stockage dans OSS.

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

file-format-name

Format de l'objet.

Important

La valeur doit correspondre à un format de fichier pris en charge par ClickHouse, en respectant la casse. Pour plus d'informations, consultez formats de fichiers pris en charge par ClickHouse.

CSV

Exemple :

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

Étape 4 : Exporter ou écrire des données dans OSS

Utilisez une instruction INSERT INTO sur la table externe OSS pour exporter ou écrire des données dans OSS. Pour plus de détails sur la syntaxe, consultez INSERT INTO.

Exporter des données ClickHouse

Enterprise Edition ou Community-compatible Edition 22,8 ou ultérieur

  • Export avec écrasement complet (exporter des données vers OSS et écraser les données existantes).

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local;
  • Export incrémentiel (exporter des données vers OSS sans écraser les données existantes).

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

    Cette opération crée un nouveau fichier dans le bucket OSS. Le nouveau fichier est nommé selon le modèle suivant : nom du fichier cible + numéro de séquence (commençant à 0 et incrémenté de 1) + nom du format de fichier.

    Par exemple, si le nom du fichier cible spécifié lors de la création de la table externe OSS est test.csv, le nouveau fichier sera nommé test0.csv. Si vous exécutez à nouveau l'opération, le nouveau fichier sera nommé test1.csv. Vous pouvez consulter le nouveau fichier via la console OSS.

Community-compatible Edition 21,8 ou antérieur

Important

L'exportation de données ApsaraDB for ClickHouse vers OSS écrase les données existantes. Faites preuve de prudence.

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

Écrire des données

Enterprise Edition ou Community-compatible Edition 22,8 ou ultérieur

  • Écrire de nouvelles données dans OSS et écraser les données existantes.

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
  • Écrire de nouvelles données dans OSS sans écraser les données existantes.

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

    Cette opération crée un nouveau fichier dans le bucket OSS. Le nouveau fichier est nommé selon le modèle suivant : nom du fichier cible + numéro de séquence (commençant à 0 et incrémenté de 1) + nom du format de fichier.

    Par exemple, si le nom du fichier cible spécifié lors de la création de la table externe OSS est test.csv, le nouveau fichier sera nommé test0.csv. Si vous exécutez à nouveau l'opération, le nouveau fichier sera nommé test1.csv. Vous pouvez consulter le nouveau fichier via la console OSS.

Community-compatible Edition 21,8 ou antérieur

Important

L'écriture de données depuis ApsaraDB for ClickHouse vers OSS écrase les données existantes. Faites preuve de prudence.

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

Opérations supplémentaires : Importer des données OSS dans ClickHouse

Si vous utilisez OSS comme stockage intermédiaire pour la migration de données, vous devez également importer les données d'OSS vers le cluster de destination. Pour plus d'informations, consultez Importer des données depuis OSS.