功能概述

ClickHouse 通过创建表函数 s3Cluster Table Function 语句,具有与外部系统集成的能力。

通过表函数 s3Cluster Table Function 语句,允许用户将数据从其他数据源导入/导出,包括 MySQL Server、ODBC/JDBC 连接、文件,以及 S3 等。

本小节主要介绍如何编写 S3 表函数,导入和导出数据。

前提条件

  • 已创建 ClickHouse 集群,且集群状态为 活跃

  • 已创建对象存储,并获取对象存储地址。

    注意

    对象存储服务与 ClickHouse 集群需在同一区域;若不在同一区域,可通过边界路由器VPN 等方式打通网络。

  • 已创建并获取 API 密钥。

操作步骤

步骤一:编写 S3 表函数

  • 基本语法

    s3(path, [access_key_id, secret_access_key,] format, structure, [compression])
  • 参数说明

    参数 说明

    path

    S3 协议的对象存储路径地址。必须以 / 结尾。

    format

    数据格式。

    structure

    表的结构。输入格式为 “column1_name column1_type,column2_name column2_type,…”;

    compression

    (可选)文件压缩方式,默认且唯一可选 gzip

步骤二:将 ClickHouse 数据导入 S3

基本语法如下。

$ echo "INSERT INTO FUNCTION s3(
'http://s3.gd2.qingstor.com/bucket-01/ck-cpu/cpu.csv',
'{access_key_id}',
'{secret_access_key}',
'CSV',
'表结构') SELECT * FROM cpu;" | curl 'http://<ClickHouse 用户名>:<ClickHouse 密码>@<高可用 IP>:8123/' --data-binary @-

步骤三:从 S3 导入数据到 ClickHouse

基本语法示例如下。

$ echo "INSERT INTO ontime SELECT * FROM s3(
'http://s3.gd2.qingstor.com/bucket-01/ck-ontime/ontime.csv',
'{access_key_id}',
'{secret_access_key}',
'CSV',
'表结构');" | curl 'http://<ClickHouse 用户名>:<ClickHouse 密码>@<高可用 IP>:8123/' --data-binary @-