网站title如何写,综合门户网站源码,中国建设银行官网站黄金部王毅,学院网站建设功能本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置#xff0c;包括自定义分隔符、字段包围符等#xff0c;并提供多种导入方式以满足不同场景的数据导入需求。
导入方式
Doris 支持以下方式导入 CSV 格式数据#xff1a;
Stream LoadBro…本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置包括自定义分隔符、字段包围符等并提供多种导入方式以满足不同场景的数据导入需求。
导入方式
Doris 支持以下方式导入 CSV 格式数据
Stream LoadBroker LoadRoutine LoadMySQL LoadINSERT INTO FROM S3 TVFINSERT INTO FROM HDFS TVF
参数配置
参数支持情况
下表列出了各种导入方式支持的 CSV 格式参数
参数默认值Stream LoadBroker LoadRoutine LoadMySQL LoadTVF行分隔符\nline_delimiterLINES TERMINATED BY不支持LINES TERMINATED BYline_delimiter列分隔符\tcolumn_separatorCOLUMNS TERMINATED BYCOLUMNS TERMINATED BYCOLUMNS TERMINATED BYcolumn_separator包围符无enclosePROPERTIES.enclosePROPERTIES.enclosePROPERTIES.encloseenclose转义符\escapePROPERTIES.escapePROPERTIES.escapePROPERTIES.escapeescape跳过行数0skip_linesPROPERTIES.skip_lines不支持IGNORE LINESskip_lines裁剪双引号falsetrim_double_quotes不支持PROPERTIES.trim_double_quotes不支持trim_double_quotes压缩格式plaincompress_typePROPERTIES.compress_type不支持不支持compress_type
注意
Stream Load参数直接通过 HTTP Header 指定如-H line_delimiter:\nBroker Load参数通过 SQL 语句指定其中 分隔符通过 COLUMNS TERMINATED BY, LINES TERMINATED BY 指定其他参数通过 PROPERTIES 指定如PROPERTIES(compress_typegz) Routine Load参数通过 SQL 语句指定其中 分隔符通过 COLUMNS TERMINATED BY 指定其他参数通过 PROPERTIES 指定如PROPERTIES(enclose\) MySQL Load参数通过 SQL 语句指定其中 分隔符通过 LINES TERMINATED BY, COLUMNS TERMINATED BY 指定其他参数通过 PROPERTIES 指定如PROPERTIES(escape\\) TVF参数通过 TVF 语句指定如S3(line_delimiter\n)
参数说明
行分隔符
作用指定导入文件中的换行符默认值\n特点支持多个字符组合作为换行符使用场景和示例 Linux/Unix 系统文件 数据文件
张三,25\n
李四,30\n参数设置
line_delimiter\n (默认值可不设置)Windows 系统文件 数据文件
张三,25\r\n
李四,30\r\n参数设置
line_delimiter\r\n特殊程序生成文件 数据文件
张三,25\r
李四,30\r参数设置
line_delimiter\r自定义多字符分隔符 数据文件
张三,25||
李四,30||参数设置
line_delimiter||列分隔符
作用指定导入文件中的列分隔符默认值\t制表符特点 支持可见和不可见字符支持多字符组合不可见字符需要使用 \x 前缀的十六进制表示 MySQL 协议特殊处理 不可见字符需要额外增加反斜线如 Hive 的 \x01 在 Broker Load 中需要写成 \\x01 使用场景和示例 常见可见字符 数据文件
张三,25,北京
李四,30,上海参数设置
column_separator,制表符默认 数据文件
张三 25 北京
李四 30 上海参数设置
column_separator\t (默认值可不设置)Hive 文件Stream Load 数据文件
张三\x0125\x01北京
李四\x0130\x01上海参数设置
column_separator\x01Hive 文件Broker Load 数据文件
张三\x0125\x01北京
李四\x0130\x01上海参数设置
PROPERTIES(column_separator\\x01)多字符分隔符 数据文件
张三||25||北京
李四||30||上海参数设置
column_separator||包围符
作用保护包含特殊字符的字段防止被错误解析限制仅支持单字节字符常用字符 单引号双引号 使用场景和示例 字段包含列分隔符 数据a,b,c,d
列分隔符,
包围符
解析结果3个字段 [a] [b,c] [d]字段包含行分隔符 数据a,b\nc,d
列分隔符,
包围符
解析结果3个字段 [a] [b\nc] [d]字段既包含列分隔符又包含行分隔符 数据a,b,c\nd,e,f
列分隔符,
包围符
解析结果3个字段 [a] [b,c\nd,e] [f]转义符
作用转义字段中与包围符相同的字符限制仅支持单字节字符默认为 \使用场景和示例 字段包含包围符 数据a,b,\c,d
列分隔符,
包围符
转义符\
解析结果3个字段 [a] [b,c] [d]字段包含多个包围符 数据a,b,\c\d,e
列分隔符,
包围符
转义符\
解析结果3个字段 [a] [b,cd] [e]字段包含转义符本身 数据a,b\\c,d
列分隔符,
包围符
转义符\
解析结果3个字段 [a] [b\c] [d]跳过行数 作用跳过 CSV 文件的前几行 类型整数类型 默认值0 特殊说明 当 format 为 csv_with_names 时系统会自动跳过首行列名忽略 skip_lines 参数当 format 为 csv_with_names_and_types 时系统会自动跳过前两行列名和类型忽略 skip_lines 参数 使用场景和示例 跳过标题行 数据文件
姓名,年龄,城市
张三,25,北京
李四,30,上海参数设置
skip_lines1
结果跳过标题行导入后续数据跳过注释行 数据文件
# 用户信息表
# 创建时间: 2024-01-01
张三,25,北京
李四,30,上海参数设置
skip_lines2
结果跳过注释行导入后续数据使用 csv_with_names 格式 数据文件
name,age,city
张三,25,北京
李四,30,上海参数设置
formatcsv_with_names
结果系统自动跳过首行列名使用 csv_with_names_and_types 格式 数据文件
name,age,city
string,int,string
张三,25,北京
李四,30,上海参数设置
formatcsv_with_names_and_types
结果系统自动跳过前两行的列名和类型信息裁剪双引号
作用裁剪掉 CSV 文件每个字段最外层的双引号类型布尔类型默认值false使用场景和示例 裁剪双引号 数据文件
张三,25,北京
李四,30,上海参数设置
trim_double_quotestrue
结果
张三,25,北京
李四,30,上海压缩格式
作用指定导入文件的压缩格式类型字符串 忽略大小写默认值plain支持的压缩格式 plain不压缩默认bz2BZIP2 压缩deflateDEFLATE 压缩gzGZIP 压缩lz4LZ4 Frame 格式压缩lz4_blockLZ4 Block 格式压缩lzoLZO 压缩lzopLZOP 压缩snappy_blockSNAPPY Block 格式压缩 注意事项 tar 是一种文件打包格式不属于压缩格式因此不支持 .tar 文件如需使用 tar 打包的文件请先解包后再导入
使用示例
本节展示了不同导入方式下的 CSV 格式使用方法。
Stream Load 导入
# 指定分隔符
curl --location-trusted -u root: \-H column_separator:, \-H line_delimiter:\n \-T example.csv \http://fe_host:fe_http_port/api/test_db/test_table/_stream_load# 处理带引号的数据
curl --location-trusted -u root: \-H column_separator:, \-H enclose:\ \-H escape:\\ \-T example.csv \http://fe_host:fe_http_port/api/test_db/test_table/_stream_load# 导入压缩文件
curl --location-trusted -u root: \-H compress_type:gz \-T example.csv.gz \http://fe_host:fe_http_port/api/test_db/test_table/_stream_loadBroker Load 导入
-- 指定分隔符
LOAD LABEL test_db.test_label
(DATA INFILE(s3://bucket/example.csv)INTO TABLE test_tableCOLUMNS TERMINATED BY ,LINES TERMINATED BY \n
)
WITH S3
(...
);-- 处理带引号的数据
LOAD LABEL test_db.test_label
(DATA INFILE(s3://bucket/example.csv)INTO TABLE test_tablePROPERTIES(enclose \,escape \\)
)
WITH S3
(...
);-- 导入压缩文件
LOAD LABEL test_db.test_label
(DATA INFILE(s3://bucket/example.csv.gz)INTO TABLE test_tablePROPERTIES(compress_type gz)
)
WITH S3
(...
);Routine Load 导入
-- 指定分隔符
CREATE ROUTINE LOAD test_db.test_job ON test_table
COLUMNS TERMINATED BY ,
FROM KAFKA
(...
);-- 处理带引号的数据
CREATE ROUTINE LOAD test_db.test_job ON test_table
COLUMNS TERMINATED BY ,
PROPERTIES
(enclose \,escape \\
)
FROM KAFKA
(...
);MySQL Load 导入
-- 指定分隔符
LOAD DATA LOCAL INFILE example.csv
INTO TABLE test_table
COLUMNS TERMINATED BY ,
LINES TERMINATED BY \n;-- 处理带引号的数据
LOAD DATA LOCAL INFILE example.csv
INTO TABLE test_table
COLUMNS TERMINATED BY ,
LINES TERMINATED BY \n
PROPERTIES
(enclose \,escape \\
);-- 跳过表头
LOAD DATA LOCAL INFILE example.csv
INTO TABLE test_table
COLUMNS TERMINATED BY ,
LINES TERMINATED BY \n
IGNORE 1 LINES;TVF 导入
-- 指定分隔符
INSERT INTO test_table
SELECT *
FROM S3
(uri s3://bucket/example.csv,format csv,column_separator ,,line_delimiter \n...
);-- 处理带引号的数据
INSERT INTO test_table
SELECT *
FROM S3
(uri s3://bucket/example.csv,format csv,column_separator ,,enclose \,escape \\...
);-- 导入压缩文件
INSERT INTO test_table
SELECT *
FROM S3
(uri s3://bucket/example.csv.gz,format csv,compress_type gz...
);