使用 INSERT INTO FILES 导出数据
本文描述了如何使用 INSERT INTO FILES 将 StarRocks 数据导出至远程存储。
从 v3.2 版本开始,StarRocks 支持使用表函数 FILES() 在远程存储中定义可写(Writable)文件。您可以通过将 FILES() 与 INSERT 语句结合,将数据从 StarRocks 导出到远程存储。
与 StarRocks 支持的其他数据导出方法相比,使用 INSERT INTO FILES 导出提供了一个更统一、易于使用的接口。您可以使用与导入数据相同的语法直接将数据导出到远程存储。此外,该方法支持通过提取指定列的值将数据文件存储在不同的存储路径中,允许您将导出的数据进一步分区。
说明
使用 INSERT INTO FILES 导出数据不支持将数据直接导出至本地文件系统 ,但您可以使用 NFS 将数据导出到本地文件。请参阅 使用 NFS 导出到本地文件。
准备工作
以下示例创建了一个名为 unload
的数据库和一个名为 sales_records
的表,作为以下教程中使用的数据对象。您也可以使用自己的数据作为替代。
CREATE DATABASE unload;
USE unload;
CREATE TABLE sales_records(
record_id BIGINT,
seller STRING,
store_id INT,
sales_time DATETIME,
sales_amt DOUBLE
)
DUPLICATE KEY(record_id)
PARTITION BY date_trunc('day', sales_time)
DISTRIBUTED BY HASH(record_id);
INSERT INTO sales_records
VALUES
(220313001,"Amy",1,"2022-03-13 12:00:00",8573.25),
(220314002,"Bob",2,"2022-03-14 12:00:00",6948.99),
(220314003,"Amy",1,"2022-03-14 12:00:00",4319.01),
(220315004,"Carl",3,"2022-03-15 12:00:00",8734.26),
(220316005,"Carl",3,"2022-03-16 12:00:00",4212.69),
(220317006,"Bob",2,"2022-03-17 12:00:00",9515.88);
表 sales_records
包含了每个交易的交易 ID record_id
、销售人员 seller
、商店 ID store_id
、时间 sales_time
和销售额 sales_amt
。该表根据 sales_time
以日为单位分区。
此外,您还需要准备一个具有写权限的远程存储系统。以下示例使用了两种远程存储系统:
- 启用了简单验证的 HDFS 集群。
- 通过 IAM User 认证介入 AWS S3 储存空间。