tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们
文档TDSQL-C MySQL 版自研内核 功能类特性COS 外表(数据库直接访问 COS 数据)

COS 外表(数据库直接访问 COS 数据)

PDF
聚焦模式
字号
最后更新时间: 2026-02-06 21:14:28

功能介绍

在数据处理和存储领域,冷数据的管理一直是一个挑战。为了解决这一问题,TXSQL 推出了腾讯云对象存储(COS)外表功能,以下简称 COS 外表。它允许用户直接在数据库中查询和分析存储在 COS 上的 CSV 格式数据。通过这一创新特性,用户可以有效地将不常访问的冷数据存储到 COS 上,同时利用数据库的查询能力进行数据管理和分析,从而优化存储成本和提高数据处理效率。


支持版本

内核版本 TXSQL 8.0 3.1.15.002及以上。

适用场景

COS 外表适用于多种场景,包括但不限于:
大数据存储:适用于需要存储大量不常访问的数据,如日志文件、历史记录等。
数据仓库:适用于构建数据仓库,对历史数据进行查询和分析。
成本优化:通过将冷数据迁移到 COS,可以降低存储成本,同时保持数据的可访问性。
数据分析:适用于需要对存储在 COS 上的 CSV 数据进行复杂查询和分析的场景。

使用限制

只支持 CSV 格式的数据。
只支持对 COS 外表进行 CREATE、SELECT、DROP 的操作。
不支持索引、分区和事务。
不支持地理空间数据类型。
不支持 ALTER TABLE 等操作。

使用说明

创建 COS 服务器

您可通过如下命令,创建 COS 服务器。
CREATE COS_SERVER <server_name> OPTIONS(
"<my_appid>" "<my_secretId>" "<my_secretKey>" "<my_bucket>" "<region>"
);
<server_name>:COS 服务器(COS SERVER)的名称,全局唯一。
<my_appid>:开发者访问 COS 服务器时拥有的用户维度唯一资源标识,用以标识资源。
<my_secretId>:开发者拥有的项目身份识别 ID,用于身份认证。
<my_secretKey>:开发者拥有的项目身份密钥。
<my_bucket>:存储桶,COS 中用于存储数据的容器。有关存储桶的详细说明,请参见 存储桶概述
<region>:存储桶的地域。存储桶支持的地域请参见 地域和访问域名。示例:ap-beijing、ap-hongkong、eu-frankfurt 等。
说明:
其中,关于 SERVER_INFO 中参数的详细说明,可参考 COS 相关术语 的介绍。SERVER_INFO 中的内容参考 COS 相关术语 里的内容进行补充。
注意:
这里 CREATE COS_SERVER 因为包含了敏感信息 my_secretKey,所以该字段在数据库中已经屏蔽。
暂时不支持 DROP COS_SERVERSHOW COS_SERVER 的操作,如果要删除 COS_SERVER,可以用 tencentroot 用户登录,然后对 mysql.cos_server_meta 中的记录执行 DELETE/SELECT 操作来完成。

操作示例

1. 创建一个 COS SERVER。
CREATE COS SERVER cos_s1 options (
"1605222305" "******************" "******************" "dcthxd-cos-test-1308666666" "ap-shanghai" );
2. 普通表导出到 COS 存储。
SELECT * FROM table_name INTO COSOUTFILE "outfile" COS_SERVER "server_name";
在 COS SERVER 中可以看到对应 outfile 的文件,其中 outfile 的内容和格式和下面语句等价:
SELECT * FROM table_name INTO OUTFILE "outfile"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\\\'
LINES TERMINATED BY '\\n' STARTING BY '';
说明:
FIELDS TERMINATED BY:表示每个字段之间的分隔符。
OPTIONALLY ENCLOSED BY:表示字段两端的标识符,加上 OPTIONALLY 后,只会在字符串类型的字段两端加标识符,否则会在所有类型的字段两端加标识符。
ESCAPED BY:转义字符,这里只能写单字符。例如,ESCAPED BY '',则 NULL 会被输出为 \\N,''会被转义为'\\'。
LINES TERMINATED BY:每一行之间的分隔符。
STARTING BY:每行开头的填充字符,这里为空。
注意:
如果需要通过 COS 外表访问 COS 存储中的数据,则命名的文件格式必须为:database.table.CSV,且必须在 my_bucket 中的一级目录下。
3. 创建 COS 外表
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`time` timestamp NULL DEFAULT NULL
) ENGINE=CSV COS_SERVER='server_name';
说明:
新增开关 thread_pool_avoid_thread_starvation,默认为打开,打开时开启线程池防饿死功能,增加参数 thread_pool_allow_more_wait_threads,配置允许等待的总线程数。
server_name 为创建 COS SERVER 时的名称,自动和 COS SERVER 中的文件 database.table.CSV 相关联。例如上面的 t1 表,其 database 是 test,那么该 COS 外表自动和 COS SERVER 上的 test.t1.CSV 文件关联,将直接访问该文件的数据。
4. 数据查询
COS 外表功能的数据查询语法与常规使用 MySQL 一致。
查询t1表内的数据数量
SELECT count(*) FROM t1;
范围查询
SELECT id FROM t1 WHERE id < 10 AND id > 1;
点查
SELECT id FROM t1 where id = 5;
多表 join
SELECT id FROM t1 left join t2 on t1.id = t2.id WHERE t2.name like "%er%";

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈