当前位置: 首页 > news >正文

doris: CSV导入数据

本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置,包括自定义分隔符、字段包围符等,并提供多种导入方式以满足不同场景的数据导入需求。

导入方式​

Doris 支持以下方式导入 CSV 格式数据:

  • Stream Load
  • Broker Load
  • Routine Load
  • MySQL Load
  • INSERT INTO FROM S3 TVF
  • INSERT 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

注意

  1. Stream Load:参数直接通过 HTTP Header 指定,如:-H "line_delimiter:\n"
  2. Broker Load:参数通过 SQL 语句指定,其中:
    • 分隔符通过 COLUMNS TERMINATED BYLINES TERMINATED BY 指定
    • 其他参数通过 PROPERTIES 指定,如:PROPERTIES("compress_type"="gz")
  3. Routine Load:参数通过 SQL 语句指定,其中:
    • 分隔符通过 COLUMNS TERMINATED BY 指定
    • 其他参数通过 PROPERTIES 指定,如:PROPERTIES("enclose"="\"")
  4. MySQL Load:参数通过 SQL 语句指定,其中:
    • 分隔符通过 LINES TERMINATED BYCOLUMNS TERMINATED BY 指定
    • 其他参数通过 PROPERTIES 指定,如:PROPERTIES("escape"="\\")
  5. 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:\x01
      

    • Hive 文件(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,"c"d] [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_lines:1
      结果:跳过标题行,导入后续数据
      

    • 跳过注释行:
      数据文件:
      # 用户信息表
      # 创建时间: 2024-01-01
      张三,25,北京
      李四,30,上海参数设置:
      skip_lines:2
      结果:跳过注释行,导入后续数据
      

    • 使用 csv_with_names 格式:
      数据文件:
      name,age,city
      张三,25,北京
      李四,30,上海参数设置:
      format:csv_with_names
      结果:系统自动跳过首行列名
      

    • 使用 csv_with_names_and_types 格式:
      数据文件:
      name,age,city
      string,int,string
      张三,25,北京
      李四,30,上海参数设置:
      format:csv_with_names_and_types
      结果:系统自动跳过前两行的列名和类型信息
      

裁剪双引号​
  • 作用:裁剪掉 CSV 文件每个字段最外层的双引号
  • 类型:布尔类型
  • 默认值:false
  • 使用场景和示例:
    • 裁剪双引号:
      数据文件:
      "张三","25","北京"
      "李四","30","上海"参数设置:
      trim_double_quotes:true
      结果:
      张三,25,北京
      李四,30,上海
      

压缩格式​
  • 作用:指定导入文件的压缩格式
  • 类型:字符串, 忽略大小写
  • 默认值:plain
  • 支持的压缩格式:
    • plain:不压缩(默认)
    • bz2:BZIP2 压缩
    • deflate:DEFLATE 压缩
    • gz:GZIP 压缩
    • lz4:LZ4 Frame 格式压缩
    • lz4_block:LZ4 Block 格式压缩
    • lzo:LZO 压缩
    • lzop:LZOP 压缩
    • snappy_block:SNAPPY 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_load

Broker 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"...
);

相关文章:

doris: CSV导入数据

本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置&#xff0c;包括自定义分隔符、字段包围符等&#xff0c;并提供多种导入方式以满足不同场景的数据导入需求。 导入方式​ Doris 支持以下方式导入 CSV 格式数据&#xff1a; Stream LoadBro…...

FastStone Image Viewer图像处理软件安装步骤(百度网盘链接)

软件简介&#xff1a;一款小巧便捷的添加水印、特效、图片处理软件&#xff0c;让使用者可以通过它的操作界面来浏览图片&#xff0c;且还支持了幻灯播放的功能&#xff0c;让使用者能够轻松的浏览目录中的所有图片。 网盘链接&#xff1a;https://pan.baidu.com/s/1Zvrx7fXwb6…...

Kafka 深入服务端 — 时间轮

Kafka中存在大量的延迟操作&#xff0c;比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器&#xff0c;来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能&#xff0c;因为它们的插入和…...

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发&#xff0c;经过2个来月的努力&#xff0c;于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志&#xff08;网络爬虫学习&#xff1a;应用selenium从搜…...

【go语言】结构体

一、type 关键字的用法 在 go 语言中&#xff0c;type 关键字用于定义新的类型&#xff0c;他可以用来定义基础类型、结构体类型、接口类型、函数类型等。通过 type 关键字&#xff0c;我们可以为现有类型创建新的类型别名或者自定义新的类型。 1.1 类型别名 使用 type 可以为…...

Spring Boot是什么及其优点

简介 Spring Boot是基于Spring框架开发的全新框架&#xff0c;其设计目的是简化Spring应用的初始化搭建和开发过程。 Spring Boot整合了许多框架和第三方库配置&#xff0c;几乎可以达到“开箱即用”。 优点 可快速构建独立的Spring应用。 直接嵌入Tomcat、Jetty和Underto…...

谷氨酸:大脑功能的多面手

标题&#xff1a;谷氨酸&#xff1a;大脑功能的多面手 文章信息摘要&#xff1a; 谷氨酸是大脑中最主要的兴奋性神经递质&#xff0c;参与了90%以上的神经元激活&#xff0c;在蛋白质合成、味觉&#xff08;鲜味&#xff09;以及神经可塑性中发挥重要作用。它与GABA、多巴胺等…...

SpringCloudGateWay和Sentinel结合做黑白名单来源控制

假设我们的分布式项目&#xff0c;admin是8087&#xff0c;gateway是8088&#xff0c;consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目&#xff0c;那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以&#xff1…...

HTML新春烟花

系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心&#xff08;双心版&#xff09;10…...

【Elasticsearch】中数据流需要配置索引模板吗?

是的&#xff0c;数据流需要配置索引模板。在Elasticsearch中&#xff0c;数据流&#xff08;Data Streams&#xff09;是一种用于处理时间序列数据的高级结构&#xff0c;它背后由多个隐藏的索引组成&#xff0c;这些索引被称为后备索引&#xff08;Backing Indices&#xff0…...

Git进阶之旅:Git 配置信息 Config

Git 配置级别&#xff1a; 仓库级别&#xff1a;local [ 优先级最高 ]用户级别&#xff1a;global [ 优先级次之 ]系统级别&#xff1a;system [ 优先级最低 ] 配置文件位置&#xff1a; git 仓库级别对应的配置文件是当前仓库下的 .git/configgit 用户级别对应的配置文件时用…...

buu-pwn1_sctf_2016-好久不见29

这个也是栈溢出&#xff0c;不一样的点是&#xff0c;有replace替换&#xff0c;要输入0x3c字符&#xff08;60&#xff09;&#xff0c;Iyou 所以&#xff0c;20个I就行&#xff0c;找后面函数 输出提示信息&#xff0c;要求用户输入关于自己的信息。 使用fgets函数从标准输入…...

ES2021+新特性、常用函数

一、ES2021新特性 ES2021 数字分隔符 let num 1234567 let num2 1_234_567 Promise.any 与 Promise.all 类似&#xff0c;Promise.any 也接受一个 Promise 的数组。当其中任何一个 Promise 完成&#xff08;fullfill&#xff09;时&#xff0c;就返回那个已经有完成值的 …...

STM32——LCD

一、引脚配置 查看引脚 将上述引脚都设置为GPIO_Output 二、导入驱动文件 将 LCD 驱动的 Inc 以及 Src 中的 fonts.h,lcd.h 和 lcd.c 导入到自己工程的驱动文件中。 当然&#xff0c;后面 lcd 的驱动学习可以和 IMX6U 一块学。 三、LCD函数 void LCD_Clear(u16 Color); 功能…...

【redis进阶】分布式锁

目录 一、什么是分布式锁 二、分布式锁的基础实现 三、引入过期时间 四、引入校验 id 五、引入lua 六、引入 watch dog (看门狗) 七、引入 Redlock 算法 八、其他功能 redis学习&#x1f973; 一、什么是分布式锁 在一个分布式的系统中&#xff0c;也会涉及到多个节点访问同一…...

园区管理系统如何提升企业核心竞争力与资产管理智能化水平

内容概要 在当今快节奏的商业环境中&#xff0c;园区管理系统正成为企业的重要合作伙伴&#xff0c;尤其在工业园、产业园、物流园、写字楼和公寓等多种类型的物业管理中。这个系统不仅仅是一个管理工具&#xff0c;它还是提升企业运营效率和核心竞争力的关键因素。通过智能化…...

AI大模型开发原理篇-3:词向量和词嵌入

简介 词向量是用于表示单词意义的向量&#xff0c; 并且还可以被认为是单词的特征向量或表示。 将单词映射到实向量的技术称为词嵌入。在实际应用中&#xff0c;词向量和词嵌入这两个重要的NLP术语通常可以互换使用。它们都表示将词汇表中的单词映射到固定大小的连续向量空间中…...

高精度算法:高精度减法

P2142 高精度减法 - 洛谷 | 计算机科学教育新生态 我们两个整数一定要是大数减去小数&#xff0c;所以这个点我们需要特判一下&#xff0c;那我们两个字符串表示的整型怎么判断大小呢&#xff0c;我们字典序比较大小和真实的数字比较大小是一样的&#xff0c;比如我们的‘21’…...

Java创建项目准备工作

新建项目 新建空项目 每一个空项目创建好后都要检查jdk版本 检查SDK和语言级别——Apply——OK 检查当前项目的Maven路径&#xff0c;如果已经配置好全局&#xff0c;就是正确路径不用管 修改项目字符集编码&#xff0c;将所有编码都调整为UTF-8 创建Spingboot工程 创建Spring…...

基于STM32的智能宠物喂食器设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 定时喂食模块远程控制与视频监控模块食物存量检测与报警模块语音互动与用户交互模块数据记录与智能分析模块 控制算法 定时与手动投喂算法食物存量检测与低存量提醒算法数据记录与远程反馈算法 代码实现 喂食控制代码存量检测…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

PostgreSQL 对 IPv6 的支持情况

PostgreSQL 对 IPv6 的支持情况 PostgreSQL 全面支持 IPv6 网络协议&#xff0c;包括连接、存储和操作 IPv6 地址。以下是详细说明&#xff1a; 一、网络连接支持 1. 监听 IPv6 连接 在 postgresql.conf 中配置&#xff1a; listen_addresses 0.0.0.0,:: # 监听所有IPv4…...

【QT】qtdesigner中将控件提升为自定义控件后,css设置样式不生效(已解决,图文详情)

目录 0.背景 1.解决思路 2.详细代码 0.背景 实际项目中遇到的问题&#xff0c;描述如下&#xff1a; 我在qtdesigner用界面拖了一个QTableView控件&#xff0c;object name为【tableView_electrode】&#xff0c;然后【提升为】了自定义的类【Steer_Electrode_Table】&…...