clickhouse-数据导入导出方案
一、简介
clickhouse有多种数据的导入导出方式,可以灵活使用,下面对这些方式分别做些介绍,导入导出的写法与格式和格式设置有关。
二、导入
1.从s3导入
详情可查看官网,也可以在这里获取数据集
-- 建库建表
CREATE DATABASE git;CREATE TABLE git.commits
(hash String,author LowCardinality(String),time DateTime,message String,files_added UInt32,files_deleted UInt32,files_renamed UInt32,files_modified UInt32,lines_added UInt32,lines_deleted UInt32,hunks_added UInt32,hunks_removed UInt32,hunks_changed UInt32
) ENGINE = MergeTree ORDER BY time;-- 导入数据
INSERT INTO git.commits SELECT *
FROM s3('https://datasets-documentation.s3.amazonaws.com/github/commits/clickhouse/commits.tsv.xz', 'TSV', 'hash String,author LowCardinality(String), time DateTime, message String, files_added UInt32, files_deleted UInt32, files_renamed UInt32, files_modified UInt32, lines_added UInt32, lines_deleted UInt32, hunks_added UInt32, hunks_removed UInt32, hunks_changed UInt32')0 rows in set. Elapsed: 1.826 sec. Processed 62.78 thousand rows, 8.50 MB (34.39 thousand rows/s., 4.66 MB/s.)
s3的表达式如下
s3(path, [aws_access_key_id, aws_secret_access_key,] [format, [structure, [compression]]])
- path — 包含文件路径的存储桶 URL。 这在只读模式下支持以下通配符:*、?、{abc,def} 和 {N…M},其中 N、M 是数字,‘abc’、‘def’ 是字符串。 有关更多信息,请参阅有关在路径中使用通配符的文档。
- format — 文件的格式。
- structure — 表的结构。 格式为“column1_name、column1_type、column2_name、column2_type,…”。
- compression — 参数是可选的。 支持的值:none、gzip/gz、brotli/br、xz/LZMA、zstd/zst。 默认情况下,它将按文件扩展名自动检测压缩。
所以我们可以看出来上面的insert语句中,第一个参数是s3的url,第二个参数是说明文件为TSV文件,第三个参数把表的结构写下来了,这里没有给第四个参数,因为默认检测了扩展名为xz,所以不需要提供
2.从本地导入
这里可以通过官网获取更详细的内容
2.1 从本地其他文件导入
# 写法一:
clickhouse-client -q "INSERT INTO git.com FORMAT CSV" < out.csv
# 写法二:
INSERT INTO com
FROM INFILE '/data/tools/out.csv'
FORMAT CSV
# 写法三:
cat out.csv|clickhouse-client -q "INSERT INTO git.com FORMAT CSV"
2.2 从本地sql文件导入
ddl语句将被跳过
INSERT INTO com
FROM INFILE '/data/tools/dump.sql' FORMAT MySQLDump
ps: 也可以直接通过文件读取数据,但是要注意读取文件的位置要在这个配置里面:user_files_path,不然会没有权限
SELECT *
FROM file('dump.sql', MySQLDump)
LIMIT 5
2.3 二进制文件
详细内容可以在官网中查看
INSERT INTO com
FROM INFILE '/data/tools/data.clickhouse' FORMAT NativeINSERT INTO com
FROM INFILE '/data/tools/data.clickhouse' COMPRESSION 'lz4' FORMAT NativeINSERT INTO com
FROM INFILE '/data/tools/data.binary' FORMAT RowBinaryINSERT INTO com
FROM INFILE '/data/tools/data.msgpk' FORMAT MsgPack
ps: 导入之前可以用以下语句查看下文件内容,不过也有同样的限制,文件的位置要在user_files_path配置里
DESCRIBE file('data.clickhouse', Native);
三、导出
1.导出数据到s3
1.1 从s3中查询数据
SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_*.gz', 'TabSeparatedWithNames')
LIMIT 10;SELECT _path, _file, trip_id
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz', 'TabSeparatedWithNames')
LIMIT 5;
注意: 我们不需要列出列,因为 TabSeparatedWithNames 格式对第一行中的列名称进行编码。 其他格式(例如 CSV 或 TSV)将为此查询返回自动生成的列,例如 c1、c2、c3 等。
查询还支持虚拟列 _path 和 _file,它们分别提供有关存储桶路径和文件名的信息。
1.2 导出数据到s3
# 导出数据到s3的单个文件中
INSERT INTO FUNCTIONs3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/csv/trips.csv.lz4','s3_key','s3_secret','CSV')
SELECT *
FROM trips
LIMIT 10000;
# 导出数据到s3的多个文件中
INSERT INTO FUNCTIONs3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/csv/trips_{_partition_id}.csv.lz4','s3_key','s3_secret','CSV')PARTITION BY rand() % 10
SELECT *
FROM trips
LIMIT 100000;
ps: clickhouse还有更多和s3联动的高级方式,这里先不做说明,后续讲解
2.导出到本地
2.1其他文件
SELECT *
FROM com
INTO OUTFILE '/data/tools/out.csv'
FORMAT CSVWithNames
2.2 sql文件
涉及到的相关参数:
- output_format_sql_insert_table_name: 指定导出表的名称,默认值为table
- output_format_sql_insert_include_column_names:指定在插入查询中是否包含列,默认包含,设置为0则不包含
- output_format_sql_insert_max_batch_size:一个insert语句中的最大行数,默认为65505
- output_format_sql_insert_quote_names :是否用反引号包含字段
- output_format_sql_insert_use_replace:使用replace语句而不是用insert语句,默认值为false
select * from commits limit 100 into outfile '/data/tools/dump.sql' truncate format SQLInsert;
SET output_format_sql_insert_table_name = 'out_table';
select * from table1 into outfile '/data/tools/dump.sql' [append|truncate] format SQLInsert;
# 可以看到/data/tools/dump.sql的文件内容如下,sql的名字变成了out_table
INSERT INTO out_table (`id`, `column1`) VALUES (1, 'abc');
2.3 二进制文件
SELECT * FROM com
INTO OUTFILE '/data/tools/data.clickhouse' FORMAT NativeSELECT * FROM com
INTO OUTFILE '/data/tools/data.clickhouse' COMPRESSION 'lz4' FORMAT NativeSELECT * FROM com
INTO OUTFILE '/data/tools/data.binary' FORMAT RowBinary# 这里必须要用limit1,多导出的话文件格式就不对了,jpg图片无法正常打开
SELECT * FROM com limit 1
INTO OUTFILE '/data/tools/data.jpg'FORMAT RawBLOBSELECT * FROM com
INTO OUTFILE '/data/tools/data.msgpk'FORMAT MsgPack
相关文章:
clickhouse-数据导入导出方案
一、简介 clickhouse有多种数据的导入导出方式,可以灵活使用,下面对这些方式分别做些介绍,导入导出的写法与格式和格式设置有关。 二、导入 1.从s3导入 详情可查看官网,也可以在这里获取数据集 -- 建库建表 CREATE DATABASE …...
[JavaWeb]【一】入门JavaWeb开发总概及HTML、CSS、JavaScript
目录 一 特色 二 收获编辑 三 什么是web? 四 网站的工作流程 五 web网站的开发模式编辑 六 web开发课程学习安排 七、初始web前端 八 HTML、CSS 8.1 什么是HTNL\CSS(w3cschool) 8.2 HTML快速入门 8.3 VS Code开发工具 8.3.1 插件 8.3.2 主题(改变颜色&…...
Python自动化小技巧18——自动化资产月报(word设置字体表格样式,查找替换文字)
案例背景 每月都要写各种月报,经营管理月报,资产月报.....这些报告文字目标都是高度相似的,只是需要替换为每个月的实际数据就行,如下: (打码是怕信息泄露.....) 可以看到,这个报告的都是高度模板化&…...
FFmpeg5.0源码阅读——VideoToobox硬件解码
摘要:本文描述了FFmpeg中videotoobox解码器如何进行解码工作,如何将一个编码的码流解码为最终的裸流。 关键字:videotoobox,decoder,ffmpeg VideoToolbox 是一个低级框架,提供对硬件编码器和解码器的直接访问。 它提供视频…...
IDEA 中Tomcat源码环境搭建
一、从仓库中拉取源代码 配置仓库地址、项目目录;点击Clone按钮,从仓库中拉取代码 Tomcat源码对应的github地址: https://github.com/apache/tomcat.git 二、安装Ant插件 打开 File -> Setting -> Plugins 三、添加Build文件 &…...
MATLAB | 七夕节用MATLAB画个玫瑰花束叭
Hey又是一年七夕节要到了,每年一次直男审美MATLAB绘图大赛开始hiahiahia,真的这些代码越写越不知道咋写,又不想每年把之前的代码翻出来再发一遍,于是今年又对我之前写的老代码进行了点优化组合,整了个花球变花束&#…...
嵌入式开发之configure
1 前述 在Linux的应用或者驱动开发过程中,编写makefile是无法避免的问题,但是由于makefile的各种规则,或显式,或隐式,非常多,不经常写的话,很难写出一个可用的makefile文件。为了“偷懒”&…...
深入浅出Pytorch函数——torch.nn.Module
分类目录:《深入浅出Pytorch函数》总目录 Pytorch中所有网络的基类,我们的模型也应该继承这个类。Modules也可以包含其它Modules,允许使用树结构嵌入他们,我们还可以将子模块赋值给模型属性。 语法 torch.nn.Module(*args, **kwargs)方法 …...
【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程
目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新: 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…...
STM32--TIM定时器(3)
文章目录 输入捕获简介频率测量输入捕获通道输入捕获基本结构PWMI的基本结构输入捕获模式测量PWM频率和占空比代码 编码器接口正交编码器工作模式接口基本结构TIM编码接口器测速代码: 输入捕获简介 输入捕获IC(Input Capture),是处理器捕获外部输入信号…...
爬虫框架- feapder + 爬虫管理系统 - feaplat 的学习简记
文章目录 feapder 的使用feaplat 爬虫管理系统部署 feapder 的使用 feapder是一款上手简单,功能强大的Python爬虫框架 feapder 官方文档 文档写的很详细,可以直接上手。 基本命令: 创建爬虫项目 feapder create -p first-project创建爬虫 …...
设计模式详解-享元模式
类型:结构型模式 实现原理:尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象 目的:减少创建对象的数量以减少内存占用和提高性能。 解决的问题:大量的对象可能造成的内存溢出问题 解决方法&a…...
BDA初级分析——用SQL筛选数据
一、用SQL对数据分组 GROUP BY Group by,按...分组 作用:根据给定字段进行字段的分组,通常和聚合函数配合使用,实现分组的分析 写法:select ...from ...group by 字段名 (也可以是多个字段) GROUP BY的逻辑 SELECT gender,COUNT(user_id) …...
(成功踩坑)electron-builder打包过程中报错
目录 注意:文中的解决方法2,一定全部看完,再进行操作,有坑 背景 报错1: 报错2: 1.原因:网络连接失败 2.解决方法1: 3.解决方法2: 3.1查看缺少什么资源文件 3.2去淘…...
【STM32】 工程
🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TO…...
Git概述
目录 一、什么是Git 二、什么是版本控制系统 三、Git和SVN对比 SVN集中式 SVN优缺点 Git分布式 Git优缺点 四、Git工作流程 四个工作区域 工作流程 五、Git下载与安装 一、什么是Git 很多人都知道,林纳斯托瓦兹在1991年创建了开源的Linux,从…...
ubuntu 编译安装nginx及安装nginx_upstream_check_module模块
如果有帮助到你,麻烦点个赞呗~ 一、下载安装包 # 下载nginx_upstream_check_module模块 wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master# 解压 unzip master# 下载nginx 1.21.6 wget https://github.com/nginx/…...
近 2000 台 Citrix NetScaler 服务器遭到破坏
Bleeping Computer 网站披露在某次大规模网络攻击活动中,一名攻击者利用被追踪为 CVE-2023-3519 的高危远程代码执行漏洞,入侵了近 2000 台 Citrix NetScaler 服务器。 研究人员表示在管理员安装漏洞补丁之前已经有 1200 多台服务器被设置了后门&#x…...
MySQL MVCC的详解之Read View
文章目录 概要一、基于UNDO LOG的版本链1.1、行记录结构1.2、了解UNDO LOG1.3、版本链 二、Read View2.1、判定机制 三、参考 概要 在上文中,我们提到了MVCC(Multi-Version Concurrency Control)多版本并发控制,是通过undo log来实现的。那具…...
基于springboot+vue的考研资讯平台(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
