STREAM LOAD
功能
Stream Load 是一种基于 HTTP 协议的同步导入方式,支持将本地文件或数据流导入到 StarRocks 中。您提交导入作业以后,StarRocks 会同步地执行导入作业,并返回导入作业的结果信息。您可以通过返回的结果信息来判断导入作业是否成功。有关 Stream Load 的应用场景、使用限制、基本原理、以及支持的数据文件格式等信息,请参见使用 Stream Load 从本地导入。
注意
- Stream Load 操作会同时更新和 StarRocks 原始表相关的物化视图的数据。
- Stream Load 操作需要目标表的 INSERT 权限。如果您的用户账号没有 INSERT 权限,请参考 GRANT 给用户赋权。
语法
curl --location-trusted -u <username>:<password> -XPUT <url>
(
data_desc
)
[opt_properties]
本文以 curl 工具为例介绍如何使用 Stream Load 导入数据。除了使用 curl 工具,您还可以通过其他支持 HTTP 协议的工具或语言提交导入作业以导入数据。导入相关的参数位于 HTTP 请求的请求头。传入这些导入相关的参数时,需要注意以下几点:
-
推荐使用分块上传方式,如本文示例所示。如果使用非分块上传方式,则必须使用请求头字段
Content-Length
来标示待上传内容的长度,从而保证数据完整性。说明
使用 curl 工具提交导入作业的时候,会自动添加
Content-Length
字段,因此无需手动指定Content-Length
。 -
必须在 HTTP 请求的请求头字段
Expect
中指定100-continue
,即"Expect:100-continue"
。这样在服务器拒绝导入作业请求的情况下,可以避免不必要的数据传输,从而减少不必要的资源开销。
注意在 StarRocks 中,部分文字是 SQL 语言的保留关键字,不能直接用于 SQL 语句。如果想在 SQL 语句中使用这些保留关键字,必须用反引号 (`) 包裹起来。参见关键字。