用ClickHouse 文件表引擎快速查询分析文件数据

2023-11-19

有时我们需要快速查询分析文件数据,正常流程需要在数据库中创建表,然后利用工具或编码导入数据,这时才能在数据库中查询分析。利用ClickHouse文件引擎可以快速查询文件数据。本文首先介绍ClickHouse文件引擎,然后介绍如何快速实现查询数据文件的方案。

ClickHouse 文件引擎

文件表引擎在文件中保存数据,支持的数据格式有:CSV, JSON, XML 等,详细内容可参考官网文档。

典型应用场景为:

  • 从ClickHouse导出数据至文件
  • 对数据进行格式转换
  • 通过编辑文件更新ClickHouse表数据

File表引擎用法

语法如下:

File(Format)

Format 参数制定一种有效的文件格式。为了执行select 查询,格式必须支持输入格式,同样为了insert查询,需支持输出。支持的格式类型可参考官网文档。大部分格式同时支持输入和输出格式,但部分格式仅支持其中之一,如 MySQLDump 仅支持输入,不支持输出。

ClickHouse 不允许指定文件路径,因为文件路径是在服务端配置文件path参数指定。

当实用上面语法创建表时,则会在指定文件夹中创建空的子目录。写入数据时,会在子目录中生成data.Format文件。我们可以在服务端文件系统中手动创建该子目录,然后ATTACH命令链接表信息,也可以从文件中查询数据。但不建议采用该方式,因为ClickHouse不跟踪外部数据变化。

举例

创建 表:file_engine_table,格式为TabSeparated,即数据用tab分隔,就是tsv文件格式。

CREATE TABLE file_engine_table (name String, value UInt32) ENGINE=File(TabSeparated)

ClickHouse 缺省在该目录下创建子目录: /var/lib/clickhouse/data/default/file_engine_table.

下面手动创建数据文件 /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated :

$ cat data.TabSeparated
one 1
two 2

查询数据

SELECT * FROM file_engine_table

┌─name─┬─value─┐
│ one  │     1 │
│ two  │     2 │
└──────┴───────┘

ClickHouse-local工具用法

在clickhouse-local工具,文件引擎除了文件格式参数,还可以指定文件路径参数。默认输入/输出流可以使用数字或人类可读的名称来指定,例如0或stdin, 1或stdout。可以根据附加的引擎参数或文件扩展名(gz、br或xz)读写压缩文件。

$ echo -e "1,2\n3,4" | clickhouse-local -q "CREATE TABLE table (a Int64, b Int64) ENGINE = File(CSV, stdin); SELECT a, b FROM table; DROP TABLE table"

其他说明

  • 可以并行执行多个 SELECT 查询, 但 INSERT查询彼此互斥需等待前面操作完成.

  • 支持通过INSERT 查询创建新文件.

  • 如果文件已存在, INSERT 操作会追加新的内容.

  • 虽然支持表分区,但不建议使用,也不会增加查询效率

  • 不支持操作

    • ALTER
    • SELECT ... SAMPLE
    • Indices
    • Replication

关于默认设置

上传文件直接分析

通过上节内容,我们指定文件表引擎就是在固定路径下创建子目录,然后在该子目录中创建对应文件(插入数据)。我们的需求是快速查询分析数据文件,如csv文件,用户上传完就可以分析。

实现步骤:

  1. 需要一些参数,如表名称和描述(英文名和中文名),

  2. 用户上传csv文件

    • 解析csv文件(读取第一行作为字段名称,最好为英文命名,读取第二行数据判断数据类型),如果没有标题行,则自动命名为F1,F2…
    • 使用文件表引擎语法创建表,引用上一步中的参数信息
    • 在元数据中插入表和字段信息,用于自助查询分析场景
    • 在该表中插入csv文件数据,动态生成insert语句。
  3. 查询该表,也可以执行一些统计查询语句。

总结

本文介绍了ClickHouse文件引擎的概念和使用方法。利用文件引擎我们快速实现对数据文件的查询统计分析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用ClickHouse 文件表引擎快速查询分析文件数据 的相关文章

  • 跨境电商三大趋势已经涌现

    在过去的几年里 跨境电商在推动外贸增长中发挥了至关重要的作用 成为了引领行业发展的强大引擎 然而 随着2024年的到来 跨境电商行业又站在了崭新的起点 准备攀登新的发展高峰 数据显示 得益于经济的逐步复苏 未来三年跨境电商行业预计将以16
  • 拓数派加入 OpenCloudOS 操作系统开源社区,作为成员单位参与社区共建

    近日 拓数派签署 CLA Contributor License Agreement 贡献者许可协议 正式加入 OpenCloudOS 操作系统开源社区 拓数派 英文名称 OpenPie 是国内基础数据计算领域的高科技创新企业 作为国内云上
  • 【计算机开题报告】二手车交易平台

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 选题目的 意义 如今时代网络技术正在快速发展 电子商务技术也以极为强势的姿态闯入人们的视野之中 随着人们生活质量的提升 为了对身边二手物品进行回收利用 二
  • 如何在CentOS安装SQL Server数据库并通过内网穿透工具实现公网访问

    文章目录 前言 1 安装sql server 2 局域网测试连接 3 安装cpolar内网穿透 4 将sqlserver映射到公网 5 公网远程连接 6 固定连接公网地址 7 使用固定公网地址连接 前言 简单几步实现在Linux cento
  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • 亚信安慧AntDB引领数字化转型:浙江移动成功实现CRM系统全域改造

    数字时代 通信运营商在不断迭代的背景下 需要不断探索数字化转型的路径 以适应快速发展的市场和技术环境 在这一浪潮中 浙江移动站在前沿 率先完成了其CRM系统的全域改造 采用了亚信安慧公司研发的AntDB数据库 为整个行业树立了数字化转型的标
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 【计算机毕业设计】学生就业管理系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统学生就业信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难题开
  • 【计算机毕业设计】Java图书馆智能选座系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本图书馆智能选座系统就是在这样的大环境下诞生 其可以帮助使用者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管
  • 【计算机毕业设计】北关村基本办公管理系统

    在如今社会上 关于信息上面的处理 没有任何一个企业或者个人会忽视 如何让信息急速传递 并且归档储存查询 采用之前的纸张记录模式已经不符合当前使用要求了 所以 对北关村基本办公信息管理的提升 也为了对北关村基本办公信息进行更好的维护 北关村基
  • 基于java的学生宿舍管理系统设计与实现

    基于java的学生宿舍管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的学生宿舍管理系统设计与实现的研究背景和动机 在数字化时代的推动下 学生宿舍管理系统已经成为了管理学生宿舍的重要工具 学生宿舍管理系统能够帮助管理者更好地管
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

    在 MongoDB 中 我们使用 find 和 find one 方法来在集合中查找数据 就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样 查找单个文档 要从MongoDB的集合中选择数据 我们可以使用 find one
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • 30天精通Nodejs--第二十天:express-操作mysql

    目录 前言 安装依赖并配置MySQL连接 安装mysql2库 配置连接信息 在Express应用中使用MySQL 结合Express路由实现CRUD操作 整合到主应用 结语 前言 在Node js中使用Expre
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据
  • Clickhouse字符串字段磁盘使用情况:null vs 空

    我正在为一个大型 Clickhouse 表设计一个架构 其中的字符串字段可能非常稀疏 我想知道这些字段是否应该为空或者我是否应该存储一个空字符串 作为默认值 就存储而言 哪个更好 您应该存储一个空字符串 可空列会占用更多磁盘空间 并使查询速
  • 在 Spark 中将带有 MapType 列的 DataFrame 写入数据库

    我正在尝试使用 clickhouse native jdbc 驱动程序将带有 MapType 列的数据帧保存到 Clickhouse 架构中也包含地图类型列 并遇到以下错误 Caused by java lang IllegalArgume

随机推荐

  • github-render.s3.amazonaws.com 报错 The specified key does not exist.

    GitHub网站在浏览 ipynb 类型的文件的时候 需要调用 https github render s3 amazonaws com 下面的接口 结果一直报404错误 返回的 xml 里面信息是 The specified key do
  • 数据结构——排序算法——基数排序

    基数排序有两种实现方式 本例属于最高位优先法 思路是从最高位开始 依次对基数进行排序 与之对应的是 最低位优先法 思路是从最低位开始 依次对基数进行排序 基数排序可以分为以下三个步骤 1 找到数组中的最大值 确定最大数字的位数 2 从最低位
  • 单片机设计_超声波测距仿真(AT89C51)

    超声波测距仿真 一 电路设计 超声波模块介绍 由于超声波指向性强 能量消耗缓慢 在介质中传播的距离较远 因而超声波经常用于距离的测量 利用超声波检测往往比较迅速 方便 计算简单 易于做到实时控制 并且在测量精度方面能达到工业实用的要求 因此
  • 3种方法:字符串转换整数 (atoi)

    文章目录 题目 解法一 排除法Python 解法二 正向逻辑C 解法三 有限状态机 C语言 题目 请你来实现一个 atoi 函数 使其能将字符串转换成整数 首先 该函数会根据需要丢弃无用的开头空格字符 直到寻找到第一个非空格的字符为止 接下
  • makefile中的多target混乱依赖模式

    来看个例子 makefile内容为 test1 test2 test1 cpp test2 cpp clean rm f test1 test2 这是一种非常懒散的写法 虽然可以work taoge localhost Desktop gt
  • TextSymbol使用方法

    private var grapbiaozhu GraphicsLayer new GraphicsLayer grapbiaozhu clear map addLayer grapbiaozhu var gra Graphic new G
  • 正点原子 第30章 SPI通信实验

    第三十章 SPI 实验 mw shl code c true 1 硬件平台 正点原子探索者STM32F407开发板 2 软件平台 MDK5 1 3 固件库版本 V1 4 0 mw shl code 本章我们将向大家介绍STM32F4的SPI
  • Python基础数据类型之字符串(一)

    Python基础数据类型之字符串 一 一 字符串格式化 1 字符串占位符 2 字符串格式化操作 二 f string格式化 三 字符串的索引 四 字符串的切片 1 常规切片使用方法 3 步长的介绍 2 切片使用方法二 一 字符串格式化 1
  • 按键精灵直接运行cmd指令

    vbs Set ObjShell CreateObject Wscript Shell vbs SttCommand cmd exe C 具体指令 vbs ObjShell Run SttCommand 0 False 比如执行python
  • vant组件库

    移动端组件库参考 https www jianshu com p c3c671787d1d 官网 https vant contrib gitee io vant v2 zh CN 1 下载安装vant组件库 cnpm i vant lat
  • python爬虫六:js2py以及selenium的使用

    1 js2py简介 http www porters vip verify sign 案例查看 Python中执行JS代码 通常两个库 js2py pyexecjs js2py是纯python实现的库 用于在python中运行js代码 本质
  • 矩阵的乘法

    1 有两个矩阵 A和B 矩阵实际上就是二维数组 A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量 运算规则 A的每一行中的数字对应乘以B的每一列的数字把结果相加起来 矩阵乘法的结果为行与列的关系为 行数量为A的行数量
  • 春秋云镜cve-2022-32991wp

    首先看靶标介绍 该CMS的welcome php中存在SQL注入攻击 访问此场景 为登录界面 可注册 注册并登陆后找可能存在sql注入的参数 尝试在各个参数后若加一个单引号报错 加两个单引号不报错 说明此参数可能存在sql注入 经过尝试在
  • python数据分析与可视化——第四章实训

    1 导入模块 import pandas as pd import numpy as np import matplotlib pyplot as plt plt rcParams font sans serif SimHei 用来正常显示
  • 阿里云ECS服务器连接MongoDB

    第一次接触MongoDB 第一次部署 将一些步骤整理出来 希望以后会用到 也希望能帮组到有这方面需求的小伙伴 设备说明 服务器为阿里云ECS服务器 网络为专有网络VPC Mango为买的阿里云Mango 各种申请事项和购买才做就不说 下面开
  • 查mysql版本的命令

    首先找到安装mysql的安装位置 我的是在D盘下tools mysql zip mysql 8 0 19 winx64 之后点击安装位置的路径 输入cmd 按enter键 进入黑窗格如图所示 输入命令mysql version 第二种win
  • STM32的CAN过滤器

    最近开始给足底压力设备加外设 这里外设个主设备之间通过can总线连接 之前使用过can总线 但是对can的过滤器不是很理解 所以这里就借机整理一下 原文地址 再谈STM32的CAN过滤器 bxCAN的过滤器的4种工作模式以及使用方法总结 S
  • 运行.sh文件报错-bash: ./download_weights.sh: Permission denied

    运行 sh文件 download weights sh 命令运行报错 bash download weights sh Permission denied 此时这个文件是不可执行的 用 ll 命令查看文件的访问权限 rw r r 1 G19
  • QT程序用windeployqt打包后无法正常启动

    QT程序用windeployqt打包后无法正常启动 显示 应用程序无法正常启动 0xc000007b 请单击确定关闭应用程序 查看exe程序所在文件夹 qt的关键dll都已经拷贝到了 考虑到我的程序还依赖其他的dll工程 虽然依赖的dll也
  • 用ClickHouse 文件表引擎快速查询分析文件数据

    有时我们需要快速查询分析文件数据 正常流程需要在数据库中创建表 然后利用工具或编码导入数据 这时才能在数据库中查询分析 利用ClickHouse文件引擎可以快速查询文件数据 本文首先介绍ClickHouse文件引擎 然后介绍如何快速实现查询