最近更新时间:2023.11.24 17:39:32
首次发布时间:2023.07.12 18:15:03
ByteHouse 支持通过 SELECT ... INTO OUTFILE 的方式支持将数据导出为本地文件或对象存储 TOS,LASFS 等。
SELECT <expr_list> INTO OUTFILE "file_path/file_name" [FORMAT format_name] [SETTINGS setting_name]
导出格式 FORMAT 支持 XML, JSON, JSONEachRow, TSVRaw, TSVWithNames, TSV, CSV, CSVWithNames, Protobuf, Pretty, Parquet 等常用格式。
SETTINGS 参数说明如下:
参数 | 说明 |
---|---|
tos_access_key | 火山秘钥管理中获取的 Access Key |
tos_secret_key | 火山秘钥管理中获取的 Secret Key |
tos_security_token | STS 临时秘钥,用于更安全地访问 TOS |
tos_region | TOS 所在地域,例如 'cn-beijing' |
安装 ByteHouse CLI
参考文档进行安装:https://github.com/bytehouse-cloud/cli
在 CLI 中,执行如下语句做导出
Bytehouse » SELECT * FROM db.table INTO OUTFILE 'out.csv' format csv
API 导出参考可以参考 ByteHouse API 接口概述,通过调用 /sql/sync 实现。
导出示例如下所示:
curl --request POST \ --url https://bytemart-cn-beijing.bytehouse.volcbiz.com/v1/sql/sync \ --header 'accept: application/json' \ --header 'authorization: Bearer {accesstoken}' \ --header 'content-type: application/json' \ --data @- <<EOF { "mode": "ansi_sql", "query": "SELECT * FROM db.table INTO OUTFILE 'out.csv' format csv", "vwID": "vw-{accountid}-default-vw" } EOF
ByteHouse 支持通过配置对象存储的路径及参数实现文件导出,可以提供更加稳定、可落盘的导出方案。可以参考如下步骤进行导出:
在火山引擎 API 访问秘钥界面,申请 ak/sk 用于连接对象存储
在策略管理页面,进入 TOSFullAccess 的授权页面添加子账户配置,给用户授权该权限。
在对象存储产品页面,确认待导出的对应 TOS 存储桶具有全读写权限。
执行如下语句进行 TOS 数据导出
select * from db.table INTO OUTFILE 'vetos://my-testing/data/data-export-test.txt' SETTINGS tos_access_key = 'ak', tos_secret_key = 'sk', tos_region = 'cn-beijing';
导出完毕后,访问对象存储桶对导出数据进行查看。
如果需要通过 STS 临时 AK/SK 及 Token 访问 TOS,需要参考对应文档生成密钥对,并配置tos_security_token
进行访问。