- StarRocks介绍
- 快速开始
- 表设计
- 导入数据
- 导出数据
- 使用StarRocks
- 参考手册
- SQL参考
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE FILE
- DROP FILE
- INSTALL PLUGIN
- SHOW BACKENDS
- SHOW BROKER
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW PLUGINS
- SHOW TABLE STATUS
- SHOW FILE
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- BACKUP
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE AS SELECT
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- CREATE FUNCTION
- DROP DATABASE
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- DROP FUNCTION
- HLL
- RECOVER
- RESTORE
- SHOW RESOURCES
- SHOW FUNCTION
- TRUNCATE TABLE
- DML
- ALTER ROUTINE LOAD
- BROKER LOAD
- CANCEL LOAD
- CANCEL EXPORT
- DELETE
- EXPORT
- GROUP BY
- INSERT
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- CREATE ROUTINE LOAD
- SELECT
- SHOW ALTER
- SHOW BACKUP
- SHOW CREATE TABLE
- SHOW CRAETE VIEW
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD
- SHOW ROUTINE LOAD TASK
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- 数据类型
- 辅助命令
- 函数参考
- 系统变量
- 错误码
- 系统限制
- SQL参考
- 管理手册
- 常见问题解答
- 性能测试
- 开发指南
- 外部系统集成
编辑
Stream Load常见问题
Stream Load是否可识别文本文件中首行的列名?或者能否指定不读取第一行?
Stream Load不能识别文本中首行的列名,首行对Stream Load来说也只是普通数据。当前还不能指定不读取首行,若需要导入的文件首行为列名,可以使用如下四种方式处理:
- 在导出工具中修改设置,重新导出不带列名的文本类数据文件。
- 使用sed -i '1d' filename等命令删除文本类文件首行。
- 在Stream Load语句中使用
-H "where: 列名 != '列名称'"
把该行过滤掉。首行字符串转其他类型的转不过去就会返回 null,所以该种方式要求表中字段不能设置的有not null。 - 在Stream Load命令中加入
-H "max_filter_ratio:0.01"
,根据数据量给它一个“1%或者更小但能容错超过1行的容错率”,将首行的错误忽视掉。加入容错率后,返回结果的ErrorURL依旧会提示有错误,但任务整体会成功。容错率不宜设置过大,避免漏掉其他数据问题。
当前业务的分区键对应的数据不是标准的date和int,比如是202106.00 的格式,假如需要使用Stream Load导入到StarRocks中,要如何转换?
StarRocks支持在导入过程中进行数据转换,具体可以参考企业版文档“4.7 导入过程中完成数据转换”。
以Stream Load为例,假设表TEST中有NO、DATE、VERSION、PRICE四列,导出的CSV数据文件中DATE字段内容是不规范的202106.00格式。如果在StarRocks中需使用的分区列为DATE,那么首先我们需要在StarRocks中进行建表,指定DATE类型为date、datetime或int。之后,在Stream Load命令中,使用:
-H "columns: NO,DATE_1, VERSION, PRICE, DATE=LEFT(DATE_1,6)"
来实现列的转换。DATE_1可以简单的认为是先占位进行取数,然后通过函数转换,赋值给StarRocks中对应的字段。特别注意,我们需要先列出 CSV 数据文件中的所有列,再进行函数转换,常规函数这里都可以使用。