Todos los productos
Search
Centro de documentos

ApsaraDB for ClickHouse:Acceso a datos de OSS con una tabla externa

Última actualización: Sep 05, 2026

Puede utilizar ApsaraDB for ClickHouse para consultar datos en Alibaba Cloud Object Storage Service (OSS) y exportar datos de ClickHouse a OSS.

Requisitos previos

  • Requisitos de OSS:

  • Requisitos del clúster:

    Debe contar con una cuenta de base de datos. Para más detalles, consulte Account Management.

Requisitos previos

  1. Cree un bucket de OSS. Para más información, consulte Create buckets in the console.

    Importante

    El bucket de OSS debe encontrarse en la misma región que su clúster de ApsaraDB for ClickHouse.

    Este ejemplo utiliza un bucket llamado ck-test-oss.

  2. Cargue un objeto en OSS.

    Este ejemplo utiliza el objeto test.csv. Cargue este objeto en OSS. Para más información, consulte Upload objects.

    Si utiliza su propio objeto, asegúrese de que su formato sea compatible con ApsaraDB for ClickHouse. ApsaraDB for ClickHouse admite todos los formatos excepto Protobuf y CapnProto. Para más información, consulte Formatos de archivo compatibles con ClickHouse.

Consulta de datos de OSS

Método 1: Tabla externa de OSS

Enterprise or Community-compatible (22.8 or later)

  1. Inicie sesión en la base de datos.

    1. Inicie sesión en la consola de ApsaraDB for ClickHouse.

    2. En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition o Enterprise Edition Clusters y, a continuación, haga clic en el ID del clúster objetivo.

    3. En la página Cluster Information, haga clic en Log On to Database en la esquina superior derecha.

    4. En el cuadro de diálogo Connect to Instance, introduzca la cuenta y la contraseña de la base de datos, y luego haga clic en Log On.

  2. Cree una tabla externa de OSS.

    Una tabla externa de OSS en ApsaraDB for ClickHouse le permite consultar objetos almacenados en OSS directamente sin importar datos al almacenamiento local, lo que habilita la separación entre almacenamiento y computación.

    La sintaxis es la siguiente:

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

    La siguiente tabla describe los parámetros.

    Parámetro

    Descripción

    Ejemplo

    table_name

    El nombre de la tabla.

    oss_test_tb

    col_name1,col_name2

    Los nombres de las columnas.

    user_name

    col_type1,col_type2

    Los tipos de datos de las columnas.

    Importante

    El esquema de la tabla externa de OSS debe ser consistente con los datos en OSS.

    String

    bucket-name

    El nombre del bucket de OSS.

    ck-test-oss

    oss-endpoint

    El endpoint interno para acceder al bucket de OSS desde una instancia ECS a través de una VPC. Para más información, consulte Regions and endpoints.

    Importante

    Asegúrese de que el bucket de OSS y su clúster de ApsaraDB for ClickHouse se encuentren en la misma región.

    oss-cn-hangzhou-internal.aliyuncs.com

    file-name

    El nombre del objeto en el bucket de OSS.

    test.csv

    access-key-id

    El AccessKey ID del usuario de RAM para acceder a los datos de OSS.

    yourAccessKeyID

    access-key-secret

    El AccessKey secret del usuario de RAM para acceder a los datos de OSS.

    Puede usar un AccessKey existente o crear uno nuevo. Para más información, consulte Create an AccessKey.

    Importante

    Para reducir el riesgo de fuga de un AccessKey, el AccessKey secret solo se muestra cuando lo crea y no se puede recuperar posteriormente. Asegúrese de almacenar el AccessKey secret de forma segura.

    yourAccessKeySecret

    file-format-name

    El formato del objeto.

    Importante

    El valor debe ser un formato de archivo compatible con ClickHouse que distinga entre mayúsculas y minúsculas. Para más información, consulte formatos de archivo compatibles con ClickHouse.

    CSV

    Ejemplo:

    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. Consulte los datos de OSS.

    SELECT * FROM oss_test_tb;

    Se devuelve el siguiente resultado:

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

Community-compatible (21.8 or earlier)

  1. Inicie sesión en la base de datos.

    1. Inicie sesión en la consola de ApsaraDB for ClickHouse.

    2. En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y, a continuación, haga clic en el ID del clúster objetivo.

    3. En la página Cluster Information, haga clic en Log On to Database en la esquina superior derecha.

    4. En el cuadro de diálogo Connect to Instance, introduzca la cuenta y la contraseña de la base de datos, y luego haga clic en Log On.

  2. Cree una tabla externa de OSS.

    La sintaxis es la siguiente:

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

    La siguiente tabla describe los parámetros.

    Parámetro

    Descripción

    Ejemplo

    table_name

    El nombre de la tabla.

    oss_test_tb

    col_name1,col_name2

    Los nombres de las columnas.

    user_name

    col_type1,col_type2

    Los tipos de datos de las columnas.

    Importante

    El esquema de la tabla externa de OSS debe ser consistente con los datos en OSS.

    String

    oss-endpoint

    El endpoint interno para acceder al bucket de OSS desde una instancia ECS a través de una VPC. Para más información, consulte Regions and endpoints.

    Importante

    Asegúrese de que el bucket de OSS y su clúster de ApsaraDB for ClickHouse se encuentren en la misma región.

    oss-cn-hangzhou-internal.aliyuncs.com

    access-key-id

    El AccessKey ID del usuario de RAM para acceder a los datos de OSS.

    yourAccessKeyID

    access-key-secret

    El AccessKey secret del usuario de RAM para acceder a los datos de OSS.

    Puede usar un AccessKey existente o crear uno nuevo. Para más información, consulte Create an AccessKey.

    Importante

    Para reducir el riesgo de fuga de un AccessKey, el AccessKey secret solo se muestra cuando lo crea y no se puede recuperar posteriormente. Asegúrese de almacenar el AccessKey secret de forma segura.

    yourAccessKeySecret

    oss-file-path

    La ruta de almacenamiento del objeto, que generalmente tiene el formato oss://<bucket-name>/<path-to-file>.

    Nota

    El parámetro oss-file-path admite coincidencias aproximadas con comodines. Para más información, consulte Use wildcards for fuzzy matching of storage paths in OSS.

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

    file-format-name

    El formato del objeto.

    Importante

    El valor debe ser un formato de archivo compatible con ClickHouse que distinga entre mayúsculas y minúsculas. Para más información, consulte formatos de archivo compatibles con ClickHouse.

    CSV

    Ejemplo:

    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. Consulte los datos de OSS.

    SELECT * FROM oss_test_tb;

    Se devuelve el siguiente resultado:

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

Método 2: Función de tabla

Enterprise or Community-compatible (22.8 or later)

  1. Inicie sesión en la base de datos.

    1. Inicie sesión en la consola de ApsaraDB for ClickHouse.

    2. En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition o Enterprise Edition Clusters y, a continuación, haga clic en el ID del clúster objetivo.

    3. En la página Cluster Information, haga clic en Log On to Database en la esquina superior derecha.

    4. En el cuadro de diálogo Connect to Instance, introduzca la cuenta y la contraseña de la base de datos, y luego haga clic en Log On.

  2. Utilice una función de tabla para consultar datos.

    La sintaxis es la siguiente:

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

    Los parámetros son los mismos que para crear una tabla externa de OSS. Para más detalles, consulte Parameter descriptions.

    Ejemplo:

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

    Se devuelve el siguiente resultado:

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

Community-compatible (21.8 or earlier)

  1. Inicie sesión en la base de datos.

    1. Inicie sesión en la consola de ApsaraDB for ClickHouse.

    2. En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y, a continuación, haga clic en el ID del clúster objetivo.

    3. En la página Cluster Information, haga clic en Log On to Database en la esquina superior derecha.

    4. En el cuadro de diálogo Connect to Instance, introduzca la cuenta y la contraseña de la base de datos, y luego haga clic en Log On.

  2. Utilice una función de tabla para consultar datos.

    La sintaxis es la siguiente:

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

    Los parámetros son los mismos que para crear una tabla externa de OSS. Para más detalles, consulte Parameter descriptions.

    Ejemplo:

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

    Se devuelve el siguiente resultado:

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

Exportación de datos de ClickHouse o escritura de datos en OSS

Notas de uso

Enterprise Edition or Community-compatible Edition 22.8 or later

Cuando exporta o escribe datos en OSS, debe establecer s3_truncate_on_insert=1 o s3_create_new_file_on_insert=1. Si no se establece ninguno de los parámetros o ambos se establecen en 0, la operación fallará si ya existe un archivo en la ruta de destino.

  • s3_truncate_on_insert=1: ApsaraDB for ClickHouse comprueba si existe un archivo en la ruta de destino.

    • Si existe un archivo, ClickHouse sobrescribe el archivo existente con los nuevos datos.

    • Este método es adecuado para exportaciones o escrituras con sobrescritura total. Sin embargo, proceda con precaución porque esta operación elimina los datos originales.

  • s3_create_new_file_on_insert=1: ClickHouse comprueba si existe un archivo en la ruta de destino.

    • Si existe un archivo, ClickHouse crea un nuevo archivo en el directorio y escribe los datos en él. El nuevo archivo se nombra siguiendo este patrón: nombre del archivo objetivo + número de secuencia (comenzando en 0 e incrementando de 1 en 1) + nombre del formato de archivo.

      Por ejemplo, si el archivo objetivo es test.csv, la primera operación crea test0.csv y la segunda operación crea test1.csv.

    • Este método es adecuado para exportaciones o escrituras incrementales y evita sobrescribir datos existentes.

Community-compatible Edition 21.8 or earlier

Al exportar datos o escribir datos, solo se utiliza un único archivo de OSS. Los nuevos datos sobrescriben el contenido del archivo original. Proceda con precaución.

Paso 1: Iniciar sesión en la base de datos

  1. Inicie sesión en la consola de ApsaraDB for ClickHouse.

  2. En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition o Enterprise Edition Clusters y, a continuación, haga clic en el ID del clúster objetivo.

  3. En la esquina superior derecha de la página Cluster Information, haga clic en Log On to Database.

  4. En el cuadro de diálogo Connect to Instance, introduzca la cuenta y la contraseña de la base de datos, y haga clic en Log On.

Paso 2: (Opcional) Preparar datos para exportar

Si necesita preparar datos de muestra para exportar de ApsaraDB for ClickHouse a OSS, siga estos pasos.

Si ya tiene datos para exportar, omita este paso.

  1. Cree una tabla según la edición de su clúster.

    Este ejemplo crea una tabla en un clúster de Community-compatible Edition con réplica única. Si su clúster es de doble réplica y ejecuta Enterprise Edition o Community-compatible Edition, consulte Create a 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. Inserte datos de muestra.

    INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');
  3. (Opcional) Consulte los datos.

    Ejecute la siguiente instrucción para comprobar que los datos se insertaron correctamente.

    SELECT * FROM test_tb_local;

Paso 3: Crear una tabla externa de OSS

Enterprise Edition or Community-compatible Edition 22.8 or later

La sintaxis es la siguiente:

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

La siguiente tabla describe los parámetros.

Parámetro

Descripción

Ejemplo

table_name

El nombre de la tabla.

oss_test_tb

col_name1,col_name2

Los nombres de las columnas.

user_name

col_type1,col_type2

Los tipos de datos de las columnas.

Importante

El esquema de la tabla externa de OSS debe ser consistente con los datos en OSS.

String

bucket-name

El nombre del bucket de OSS.

ck-test-oss

oss-endpoint

El endpoint interno para acceder al bucket de OSS desde una instancia ECS a través de una VPC. Para más información, consulte Regions and endpoints.

Importante

Asegúrese de que el bucket de OSS y su clúster de ApsaraDB for ClickHouse se encuentren en la misma región.

oss-cn-hangzhou-internal.aliyuncs.com

file-name

El nombre del objeto en el bucket de OSS.

test.csv

access-key-id

El AccessKey ID del usuario de RAM para acceder a los datos de OSS.

yourAccessKeyID

access-key-secret

El AccessKey secret del usuario de RAM para acceder a los datos de OSS.

Puede usar un AccessKey existente o crear uno nuevo. Para más información, consulte Create an AccessKey.

Importante

Para reducir el riesgo de fuga de un AccessKey, el AccessKey secret solo se muestra cuando lo crea y no se puede recuperar posteriormente. Asegúrese de almacenar el AccessKey secret de forma segura.

yourAccessKeySecret

file-format-name

El formato del objeto.

Importante

El valor debe ser un formato de archivo compatible con ClickHouse que distinga entre mayúsculas y minúsculas. Para más información, consulte formatos de archivo compatibles con ClickHouse.

CSV

Ejemplo:

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 or earlier

La sintaxis es la siguiente:

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

La siguiente tabla describe los parámetros.

Parámetro

Descripción

Ejemplo

table_name

El nombre de la tabla.

oss_test_tb

col_name1,col_name2

Los nombres de las columnas.

user_name

col_type1,col_type2

Los tipos de datos de las columnas.

Importante

El esquema de la tabla externa de OSS debe coincidir con los datos almacenados en OSS.

String

oss-endpoint

El endpoint interno para acceder al bucket de OSS desde una instancia de ECS a través de una VPC. Para obtener más información, consulte Regions and endpoints.

Importante

Asegúrese de que el bucket de OSS y su clúster de ApsaraDB for ClickHouse se encuentren en la misma región.

oss-cn-hangzhou-internal.aliyuncs.com

access-key-id

El AccessKey ID del usuario de RAM para acceder a los datos de OSS.

yourAccessKeyID

access-key-secret

El AccessKey secret del usuario de RAM para acceder a los datos de OSS.

Puede utilizar un AccessKey existente o crear uno nuevo. Para obtener más información, consulte Create an AccessKey.

Importante

Para reducir el riesgo de fuga de un AccessKey, el AccessKey secret solo se muestra en el momento de su creación y no es posible recuperarlo posteriormente. Asegúrese de guardar el AccessKey secret de forma segura.

yourAccessKeySecret

oss-file-path

La ruta de almacenamiento del objeto, que generalmente sigue el formato oss://<bucket-name>/<path-to-file>.

Nota

El parámetro oss-file-path admite coincidencias aproximadas mediante comodines. Para obtener más información, consulte Use wildcards for fuzzy matching of storage paths in OSS.

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

file-format-name

El formato del objeto.

Importante

El valor debe ser un formato de archivo compatible con ClickHouse y distingue entre mayúsculas y minúsculas. Para obtener más información, consulte formatos de archivo compatibles con ClickHouse.

CSV

Ejemplo:

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

Paso 4: Exportar o escribir datos en OSS

Utilice una instrucción INSERT INTO en la tabla externa de OSS para exportar o escribir datos en OSS. Para obtener detalles sobre la sintaxis, consulte INSERT INTO.

Exportar datos de ClickHouse

Enterprise Edition or Community-compatible Edition 22.8 or later

  • Exportación con sobrescritura total (exporta datos a OSS y sobrescribe los datos existentes).

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local;
  • Exportación incremental (exporta datos a OSS sin sobrescribir los datos existentes).

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

    Esta operación crea un nuevo archivo en el bucket de OSS. El nombre del nuevo archivo sigue este patrón: nombre del archivo de destino + número de secuencia (comienza en 0 y aumenta de 1 en 1) + nombre del formato de archivo.

    Por ejemplo, si el nombre del archivo de destino que especificó al crear la tabla externa de OSS es test.csv, el nuevo archivo se llamará test0.csv. Si ejecuta la operación nuevamente, el nuevo archivo se llamará test1.csv. Puede utilizar OSS console para consultar el nuevo archivo.

Community-compatible Edition 21.8 or earlier

Importante

La exportación de datos de ApsaraDB for ClickHouse a OSS sobrescribe los datos existentes. Proceda con precaución.

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

Escribir datos

Enterprise Edition or Community-compatible Edition 22.8 or later

  • Escribir nuevos datos en OSS y sobrescribir los datos existentes.

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
  • Escribir nuevos datos en OSS sin sobrescribir los datos existentes.

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

    Esta operación crea un nuevo archivo en el bucket de OSS. El nombre del nuevo archivo sigue este patrón: nombre del archivo de destino + número de secuencia (comienza en 0 y aumenta de 1 en 1) + nombre del formato de archivo.

    Por ejemplo, si el nombre del archivo de destino que especificó al crear la tabla externa de OSS es test.csv, el nuevo archivo se llamará test0.csv. Si ejecuta la operación nuevamente, el nuevo archivo se llamará test1.csv. Puede utilizar OSS console para consultar el nuevo archivo.

Community-compatible Edition 21.8 or earlier

Importante

La escritura de datos desde ApsaraDB for ClickHouse hacia OSS sobrescribe los datos existentes. Proceda con precaución.

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

Más operaciones: Importar datos de OSS a ClickHouse

Si utiliza OSS como almacenamiento intermedio para la migración de datos, también deberá importar los datos desde OSS hacia el clúster de destino. Para obtener más información, consulte Import data from OSS.