StarRocks导入数据【Stream Load】

介绍将数据导入 StarRocks 的常用方法。

准备工作

  1. 确保已执行 01_prepare_table.sql 创建目标表。
  2. 确保你的 StarRocks FE HTTP 端口是 8030 (Docker 默认)。

导入方式

1. Insert Into

最简单的 SQL 插入,适用于测试或小批量数据。

复制代码
INSERT INTO stream_load_demo VALUES (99, 'Test', '2023-01-01');

2. Stream Load (推荐)

最常用的实时/准实时导入方式,通过 HTTP 协议上传文件。

  • CSV 导入 : 运行 sh 02_stream_load_csv.sh
  • JSON 导入 : 运行 sh 03_stream_load_json.sh

Stream Load 是同步导入,命令返回 Status: Success 即表示数据已可见。

注意事项

  • 生产环境建议使用程序 (Java/Python/Go SDK) 封装 Stream Load。
  • 对于 Kafka 数据源,StarRocks 提供了 Routine Load 功能(配置 SQL 任务即可持续消费 Kafka)。
sql 复制代码
-- Phase 3: 数据导入
-- 01_prepare_table.sql

USE learn_starrocks;

CREATE TABLE IF NOT EXISTS stream_load_demo (
    id INT,
    name VARCHAR(50),
    event_date DATE
)
ENGINE=OLAP
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 3
PROPERTIES (
    "replication_num" = "1"
);
bash 复制代码
#!/bin/bash

# Phase 3: Stream Load (CSV)
# 02_stream_load_csv.sh

# 确保表已创建 (执行 01_prepare_table.sql)

echo "Loading CSV data into stream_load_demo..."

# 参数说明:
# -H "column_separator:," : 指定CSV分隔符
# -H "columns: id, name, event_date" : 指定CSV列对应的表字段顺序
# -T data.csv : 要上传的文件

curl --location-trusted -u root: \
    -H "label:csv_load_$(date +%s)" \
    -H "column_separator:," \
    -H "columns: id, name, event_date" \
    -T data.csv \
    http://127.0.0.1:8030/api/learn_starrocks/stream_load_demo/_stream_load

echo -e "\nDone."
bash 复制代码
#!/bin/bash

# Phase 3: Stream Load (JSON)
# 03_stream_load_json.sh

# 确保表已创建

echo "Loading JSON data into stream_load_demo..."

# 参数说明:
# -H "format: json" : 指定数据格式为 JSON
# -H "jsonpaths: [\"$.id\", \"$.name\", \"$.date\"]" : (可选) 如果JSON Key和表列名不完全一致,需指定映射

curl --location-trusted -u root: \
    -H "label:json_load_$(date +%s)" \
    -H "format: json" \
    -H "strip_outer_array: true" \
    -T data.json \
    http://127.0.0.1:8030/api/learn_starrocks/stream_load_demo/_stream_load

echo -e "\nDone."

CSV:

bash 复制代码
1,Alice,2023-11-01
2,Bob,2023-11-01
3,Charlie,2023-11-02

JSON

bash 复制代码
[
    {"id": 4, "name": "David", "date": "2023-11-03"},
    {"id": 5, "name": "Eve", "date": "2023-11-03"}
]
相关推荐
l1t31 分钟前
DeepSeek总结的PostgreSQL使用 RDTSC 降低 EXPLAIN ANALYZE 的计时开销
数据库·postgresql
lagrahhn31 分钟前
Oracle中各个c版本介绍
数据库·oracle
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,在生产环境中设置MongoDB(21)
数据库·学习·mongodb
XDHCOM1 小时前
ORA-12445报错:无法更改列隐藏属性,Oracle故障修复与远程处理,网友推荐解决方案
数据库·oracle
麒麟ZHAO1 小时前
鸿蒙flutter第三方库适配 - 文件对比工具
数据库·redis·flutter·华为·harmonyos
香蕉鼠片1 小时前
Redis
数据库·redis·缓存
翻斗包菜1 小时前
第 03 章 Python 操作 MySQL 数据库实战全解
数据库·python·mysql
SPC的存折1 小时前
1、MySQL故障排查与运维案例
linux·运维·服务器·数据库·mysql
小臭希1 小时前
Redis(NoSQL数据库,Linux-Ubuntu环境下)
数据库·redis·缓存
cdcdhj1 小时前
在window下将Mongodb单机改为副本集,只用于测试环境,实际上并没有增加真的副本集
数据库·mongodb