本文介绍如何通过云数据库ClickHouse查询阿里云对象存储OSS(Object Storage Service)数据以及如何写入数据至OSS。
前提条件
注意事项
云数据库ClickHouse支持访问多种格式的OSS文件,除不支持Protobuf和CapnProto外,其他均支持,具体请参见ClickHouse支持的文件格式。
请确认OSS存储空间(Bucket)与您的云数据库ClickHouse集群在同一地域,并使用阿里云VPC网络访问OSS。
通过云数据库ClickHouse写入数据至OSS,会覆盖原来的OSS文件数据。
步骤一:登录数据库
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在集群信息页面,单击右上方导航栏的登录数据库。
在登录实例页面,输入数据库账号和密码,单击登录。
步骤二:创建OSS外表
创建OSS外表。
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>');
22.8版本的建表语法:
CREATE TABLE <table_name> [on cluster default] ( 'col_name1' col_type1, 'col_name2' col_type2, ... ) ENGINE = OSS('https://<bucketName>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');
参数说明如下:
参数名
描述
参数名
描述
table_name
表名。
col_name1,col_name2
列名。
col_type1,col_type2
列类型。
OSS外表的结构类型需与OSS数据对应。
BucketName
Bucket的名称。
oss-endpoint
ECS的VPC网络访问(内网)的Endpoint。如何获取,请参见OSS地域和访问域名。
请确保OSS存储空间(Bucket)与您的云数据库ClickHouse集群在同一地域。
file-name
文件名称。
access-key-id
访问OSS数据的AccessKey ID。
access-key-secret
访问OSS数据的AccessKey Secret。
oss-file-path
文件的存储路径。一般格式为
oss://<bucket-name>/<path-to-file>
。oss-file-path
参数支持通过通配符进行模糊匹配。更多信息,请参见通配符模糊匹配OSS的存储路径。file-format-name
文件的格式,本文为CSV。
示例语句:
21.8及以下版本的示例语句:
CREATE TABLE oss_test_tbl on cluster default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = OSS('oss-cn-shanghai-internal.aliyuncs.com', 'LTAI5tDVcUKu2CbcBwhr****', 'WAcroHBcL7IVOK8FIHzNJy91Lc****', 'oss://testBucketName/test.csv', 'CSV');
22.8版本的示例语句:
CREATE TABLE oss_test_tbl on cluster default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = OSS('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI5tDVcUKu2CbcBwhr****', 'WAcroHBcL7IVOK8FIHzNJy91Lc****','CSV')
查询OSS外表的数据。
select * from oss_test_tbl;
返回结果:
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 1 │ tick │ 32 │ shanghai │ http://example.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
步骤三:写入数据至OSS
insert into oss_test_tbl values(11, 'tick', 25, 'shanghai', 'http://example.com');
步骤四:查询数据
云数据库ClickHouse提供了表引擎和表函数两种方法查询OSS数据。
通过表引擎查询OSS数据。
查询OSS外表的数据:
select * from oss_test_tbl;
返回结果:
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 11 │ tick │ 25 │ shanghai │ http://example.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
通过表函数查询OSS数据。
21.8及以下版本的查询语法:
SELECT * FROM oss('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>', '<col_name> <col_type>(,...)');
22.8版本的查询语法:
SELECT * FROM oss('https://<bucketName>.<oss-endpoint>/<file-name>','<access-key-id>', '<access-key-secret>', '<file-format-name>', '<col_name> <col_type>(,...)');
参数的详细信息,请参见参数说明。
示例语句:
21.8及以下版本的查询语句:
SELECT * FROM oss('oss-cn-shanghai-internal.aliyuncs.com', 'LTAI5tDVcUKu2CbcBwhr****', 'WAcroHBcL7IVOK8FIHzNJy91Lc****', 'oss://testBucketName/test.csv', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String');
22.8版本的查询语句:
SELECT * FROM oss('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI5tDVcUKu2CbcBwhr****', 'WAcroHBcL7IVOK8FIHzNJy91Lc****', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String')
返回结果:
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 11 │ tick │ 25 │ shanghai │ http://example.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
- 本页导读 (1)
- 前提条件
- 注意事项
- 步骤一:登录数据库
- 步骤二:创建OSS外表
- 步骤三:写入数据至OSS
- 步骤四:查询数据