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

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有多种数据的导入导出方式&#xff0c;可以灵活使用&#xff0c;下面对这些方式分别做些介绍&#xff0c;导入导出的写法与格式和格式设置有关。 二、导入 1.从s3导入 详情可查看官网&#xff0c;也可以在这里获取数据集 -- 建库建表 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 主题&#xff08;改变颜色&…...

Python自动化小技巧18——自动化资产月报(word设置字体表格样式,查找替换文字)

案例背景 每月都要写各种月报&#xff0c;经营管理月报&#xff0c;资产月报.....这些报告文字目标都是高度相似的&#xff0c;只是需要替换为每个月的实际数据就行&#xff0c;如下&#xff1a; (打码是怕信息泄露.....) 可以看到&#xff0c;这个报告的都是高度模板化&…...

FFmpeg5.0源码阅读——VideoToobox硬件解码

摘要&#xff1a;本文描述了FFmpeg中videotoobox解码器如何进行解码工作&#xff0c;如何将一个编码的码流解码为最终的裸流。   关键字&#xff1a;videotoobox,decoder,ffmpeg   VideoToolbox 是一个低级框架&#xff0c;提供对硬件编码器和解码器的直接访问。 它提供视频…...

IDEA 中Tomcat源码环境搭建

一、从仓库中拉取源代码 配置仓库地址、项目目录&#xff1b;点击Clone按钮&#xff0c;从仓库中拉取代码 Tomcat源码对应的github地址&#xff1a; https://github.com/apache/tomcat.git 二、安装Ant插件 打开 File -> Setting -> Plugins 三、添加Build文件 &…...

MATLAB | 七夕节用MATLAB画个玫瑰花束叭

Hey又是一年七夕节要到了&#xff0c;每年一次直男审美MATLAB绘图大赛开始hiahiahia&#xff0c;真的这些代码越写越不知道咋写&#xff0c;又不想每年把之前的代码翻出来再发一遍&#xff0c;于是今年又对我之前写的老代码进行了点优化组合&#xff0c;整了个花球变花束&#…...

嵌入式开发之configure

1 前述 在Linux的应用或者驱动开发过程中&#xff0c;编写makefile是无法避免的问题&#xff0c;但是由于makefile的各种规则&#xff0c;或显式&#xff0c;或隐式&#xff0c;非常多&#xff0c;不经常写的话&#xff0c;很难写出一个可用的makefile文件。为了“偷懒”&…...

深入浅出Pytorch函数——torch.nn.Module

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 Pytorch中所有网络的基类&#xff0c;我们的模型也应该继承这个类。Modules也可以包含其它Modules,允许使用树结构嵌入他们&#xff0c;我们还可以将子模块赋值给模型属性。 语法 torch.nn.Module(*args, **kwargs)方法 …...

【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程

目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新&#xff1a; 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…...

STM32--TIM定时器(3)

文章目录 输入捕获简介频率测量输入捕获通道输入捕获基本结构PWMI的基本结构输入捕获模式测量PWM频率和占空比代码 编码器接口正交编码器工作模式接口基本结构TIM编码接口器测速代码&#xff1a; 输入捕获简介 输入捕获IC(Input Capture)&#xff0c;是处理器捕获外部输入信号…...

爬虫框架- feapder + 爬虫管理系统 - feaplat 的学习简记

文章目录 feapder 的使用feaplat 爬虫管理系统部署 feapder 的使用 feapder是一款上手简单&#xff0c;功能强大的Python爬虫框架 feapder 官方文档 文档写的很详细&#xff0c;可以直接上手。 基本命令&#xff1a; 创建爬虫项目 feapder create -p first-project创建爬虫 …...

设计模式详解-享元模式

类型&#xff1a;结构型模式 实现原理&#xff1a;尝试重用现有的同类对象&#xff0c;如果未找到匹配的对象&#xff0c;则创建新对象 目的&#xff1a;减少创建对象的数量以减少内存占用和提高性能。 解决的问题&#xff1a;大量的对象可能造成的内存溢出问题 解决方法&a…...

BDA初级分析——用SQL筛选数据

一、用SQL对数据分组 GROUP BY Group by&#xff0c;按...分组 作用:根据给定字段进行字段的分组&#xff0c;通常和聚合函数配合使用&#xff0c;实现分组的分析 写法:select ...from ...group by 字段名 (也可以是多个字段) GROUP BY的逻辑 SELECT gender,COUNT(user_id) …...

(成功踩坑)electron-builder打包过程中报错

目录 注意&#xff1a;文中的解决方法2&#xff0c;一定全部看完&#xff0c;再进行操作&#xff0c;有坑 背景 报错1&#xff1a; 报错2&#xff1a; 1.原因&#xff1a;网络连接失败 2.解决方法1&#xff1a; 3.解决方法2&#xff1a; 3.1查看缺少什么资源文件 3.2去淘…...

【STM32】 工程

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TO…...

Git概述

目录 一、什么是Git 二、什么是版本控制系统 三、Git和SVN对比 SVN集中式 SVN优缺点 Git分布式 Git优缺点 四、Git工作流程 四个工作区域 工作流程 五、Git下载与安装 一、什么是Git 很多人都知道&#xff0c;林纳斯托瓦兹在1991年创建了开源的Linux&#xff0c;从…...

ubuntu 编译安装nginx及安装nginx_upstream_check_module模块

如果有帮助到你&#xff0c;麻烦点个赞呗&#xff5e; 一、下载安装包 # 下载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 网站披露在某次大规模网络攻击活动中&#xff0c;一名攻击者利用被追踪为 CVE-2023-3519 的高危远程代码执行漏洞&#xff0c;入侵了近 2000 台 Citrix NetScaler 服务器。 研究人员表示在管理员安装漏洞补丁之前已经有 1200 多台服务器被设置了后门&#x…...

MySQL MVCC的详解之Read View

文章目录 概要一、基于UNDO LOG的版本链1.1、行记录结构1.2、了解UNDO LOG1.3、版本链 二、Read View2.1、判定机制 三、参考 概要 在上文中&#xff0c;我们提到了MVCC&#xff08;Multi-Version Concurrency Control)多版本并发控制&#xff0c;是通过undo log来实现的。那具…...

基于springboot+vue的考研资讯平台(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

保姆级教程:用Clawdbot将私有化Qwen3-VL接入飞书,打造企业智能助手

保姆级教程&#xff1a;用Clawdbot将私有化Qwen3-VL接入飞书&#xff0c;打造企业智能助手 1. 准备工作与环境确认 1.1 硬件环境检查 在开始前&#xff0c;请确保您的星图云实例满足以下最低配置要求&#xff1a; 组件最低要求推荐配置GPU显存24GB48GBCPU核心8核20核系统内…...

RuoYi项目部署避坑大全:从宝塔面板配置到前端OpenSSL报错,一次讲清所有常见问题

RuoYi项目部署避坑指南&#xff1a;从错误现象到根治方案 1. 部署前的环境准备与常见陷阱 部署RuoYi这类前后端分离项目时&#xff0c;环境配置往往是第一个拦路虎。不少开发者习惯直接跳到代码部署环节&#xff0c;却忽略了基础环境的兼容性问题。我们先来看看那些容易被忽视的…...

7个C++性能优化技巧:从LeetCode87算法实现中学习高效编程

7个C性能优化技巧&#xff1a;从LeetCode87算法实现中学习高效编程 【免费下载链接】leetcode &#x1f525;LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer&#xff08;第 2 版&#xff09;》、《程序员面试金典&#xff08;第 6…...

nlp_gte_sentence-embedding_chinese-large实战案例:客服工单自动归类与聚类分析

nlp_gte_sentence-embedding_chinese-large实战案例&#xff1a;客服工单自动归类与聚类分析 1. 引言&#xff1a;客服工单处理的痛点与解决方案 每天处理成千上万的客服工单是什么体验&#xff1f;想象一下这样的场景&#xff1a;客服团队每天收到大量用户反馈&#xff0c;从…...

AI金融分析与智能交易系统:TradingAgents-CN全攻略

AI金融分析与智能交易系统&#xff1a;TradingAgents-CN全攻略 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在数字化投资时代&#xff0c;如何…...

新手福音:用快马ai生成交互式linux命令学习器,边学边练轻松入门

作为一名Linux新手&#xff0c;我刚开始接触命令行时总是记不住各种命令的用法&#xff0c;更别提写脚本了。直到发现了InsCode(快马)平台&#xff0c;它让我用自然语言描述需求就能生成可运行的交互式学习工具&#xff0c;简直是零基础入门的神器&#xff01; 为什么需要交互式…...

Sleep-EDF数据库实战:如何用Matlab快速处理睡眠分期标签(附完整代码)

Sleep-EDF数据库实战&#xff1a;如何用Matlab快速处理睡眠分期标签&#xff08;附完整代码&#xff09; 睡眠研究是神经科学和临床医学的重要领域&#xff0c;而Sleep-EDF数据库作为公开可用的标准数据集&#xff0c;为科研人员提供了宝贵的多导睡眠图(PSG)记录。但在实际应用…...

WarcraftHelper终极指南:魔兽争霸III现代化增强解决方案

WarcraftHelper终极指南&#xff1a;魔兽争霸III现代化增强解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为经典游戏…...

不知道怎么用Claude code?

稳定可靠中转站&#xff0c;不降智&#xff01;&#xff01;...

ddclient与主流网络服务集成:PPP、DHCP、systemd和cron的完美搭配

ddclient与主流网络服务集成&#xff1a;PPP、DHCP、systemd和cron的完美搭配 【免费下载链接】ddclient Ddclient updates dynamic DNS entries for accounts on a wide range of dynamic DNS services. 项目地址: https://gitcode.com/gh_mirrors/dd/ddclient ddclien…...