我的编程空间,编程开发者的网络收藏夹
学习永远不晚

clickhouse批量插入数据及ClickHouse常用命令的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

clickhouse批量插入数据及ClickHouse常用命令的示例分析

小编给大家分享一下clickhouse批量插入数据及ClickHouse常用命令的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一.安装使用

ClickHouse是Yandex提供的一个开源的列式存储数据库管理系统,多用于联机分析(OLAP)场景,可提供海量数据的存储和分析,同时利用其数据压缩和向量化引擎的特性,能提供快速的数据搜索。

clickhouse批量插入数据及ClickHouse常用命令的示例分析

Ⅰ).安装

sudo yum install yum-utilssudo rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64sudo yum install clickhouse-server clickhouse-clientsudo /etc/init.d/clickhouse-server startclickhouse-client

Ⅱ).配置

a).clickhouse-server

CLICKHOUSE_USER=username CLICKHOUSE_LOGDIR=${CLICKHOUSE_HOME}/log/clickhoue-serverCLICKHOUSE_LOGDIR_USER=usernameCLICKHOUSE_DATADIR_OLD=${CLICKHOUSE_HOME}/data/oldCLICKHOUSE_DATADIR=${CLICKHOUSE_HOME}/data

b).config.xml

... ...  <!-- 配置日志参数 -->  <logger>    <level>info</level>    <log>${CLICKHOUSE_HOME}/log/clickhoue-server/clickhoue-server.log</log>    <errorlog>${CLICKHOUSE_HOME}/log/clickhoue-server/clickhoue-server-error.log</errorlog>    <size>100M</size>    <count>5</count>  </logger>   <!-- 配置数据保存路径 -->  <path>${CLICKHOUSE_HOME}</>  <tmp_path>${CLICKHOUSE_HOME}/tmp</>  <user_files_path>${CLICKHOUSE_HOME}/user_files</>   <!-- 配置监听 -->  <listen_host>::</listen_host>   <!-- 配置时区 -->  <timezone>Asiz/Shanghai</timezone>... ...

Ⅲ).启停服务

#### a).启动服务sudo service clickhouse-server start#### b).停止服务sudo service clickhouse-server stop

Ⅳ).客户端访问

clickhouse-client

二.常用命令

Ⅰ).创建表

CREATE TABLE IF NOT EXISTS database.table_name ON cluster cluster_shardNum_replicasNum(    'id' UInt64,    'name' String,    'time' UInt64,    'age' UInt8,    'flag' UInt8)ENGINE = MergeTreePARTITION BY toDate(time/1000)ORDER BY (id,name)SETTINGS index_granularity = 8192

Ⅱ).创建物化视图

CREATE MATERIALIZED VIEW database.view_name ON cluster cluster_shardNum_replicasNumENGINE = AggregatingMergeTreePARTITION BY toYYYYMMDD(time)ORDER BY (id,name)AS SELECT     toStartOfHour(toDateTime(time/1000)) as time,    id,    name,    sumState( if (flag = 1, 1, 0)) AS successCount,    sumState( if (flag = 0, 1, 0)) AS faildCount,    sumState( if ((age < 10), 1, 0)) AS rang1Age,    sumState( if ((age > 10) AND (age < 20), 2, 0)) AS rang2Age,    sumState( if ((age > 20), 3, 0)) AS rang3Age,    maxState(age) AS maxAge,    minState(age) AS minAgeFROM datasource.table_nameGROUP BY time,id,name

Ⅲ).插入数据

a).普通数据插入

INSERT INTO database.table_name(id, name, age, flag) VALUES(1, 'test', 15, 0)

b).Json数据插入

INSERT INTO database.table_name FORMAT JSONEachRow{"id":"1", "name":"test", "age":"11", "flag":"1"}

Ⅳ).查询数据

a).表数据查询

SELECT * FROM database.table_name WHERE id=1

b).物化视图查询

SELECT id, name, sumMerge(successCount), sumMerge(faildCount), sumMerge(rang1Age), sumMerge(rang2Age), maxMerge(maxAge), minMerge(minAge) FROM database.view_name WHERE id=1GROUP BY id, name

Ⅴ).创建NESTED表

CREATE TABLE IF NOT EXISTS database.table_name(  'id' UInt64,  'name' String,  'time' UInt64,  'age' UInt8,  'flag' UInt8nested_table_name Nested (  sequence UInt32,  id UInt64,  name String,  time UInt64,  age UInt8,  flag UInt8  socketAddr String,  socketRemotePort UInt32,  socketLocalPort UInt32,  eventTime UInt64,  exceptionClassName String,  hashCode Int32,  nextSpanId UInt64))ENGINE = MergeTreePARTITION BY toDate (time / 1000)ORDER BY (id, name, time)SETTINGS index_granularity = 8192

Ⅵ).NESTED表数据查询

SELECT table1.*,table1.id FROM nest.table_name AS table1 array JOIN nested_table_name AS table2

Ⅶ).配置字典项

<dictionaries>  <dictionary>    <name>url</name>      <source>      <clickhouse>        <host>hostname</host>          <port>9000</port>          <user>default</user>          <password/>          <db>dict</db>          <table>url_dict</table>      </clickhouse>    </source>      <lifetime>      <min>30</min>        <max>36</max>    </lifetime>      <layout>      <hashed/>    </layout>      <structure>      <id>        <name>id</name>      </id>        <attribute>        <name>hash_code</name>          <type>String</type>          <null_value/>      </attribute>        <attribute>        <name>url</name>          <type>String</type>          <null_value/>      </attribute>    </structure>  </dictionary>    <dictionary>    <name>url_hash</name>      <source>      <clickhouse>        <host>hostname</host>          <port>9000</port>          <user>default</user>          <password/>          <db>dict</db>          <table>url_hash</table>      </clickhouse>    </source>      <lifetime>      <min>30</min>        <max>36</max>    </lifetime>      <layout>      <complex_key_hashed/>    </layout>      <structure>      <key>        <attribute>          <name>hash_code</name>            <type>String</type>        </attribute>      </key>        <attribute>        <name>url</name>          <type>String</type>          <null_value/>      </attribute>    </structure>  </dictionary></dictionaries>

Ⅷ).字典查询

SELECT    id,    dictGet('name', 'name', toUInt64(name)) AS name,    dictGetString('url', 'url', tuple(url)) AS urlFROM table_name

Ⅸ).导入数据

clickhouse-client --query="INSERT INTO database.table_name FORMAT CSVWithNames" < /path/import_filename.csv

Ⅹ).导出数据

clickhouse-client --query="SELECT * FROM database.table_name FORMAT CSV" sed 's/"//g' > /path/export_filename.csv

Ⅺ).查看partition状态

SELECT table, name, partition,active FROM system.parts WHERE database='database_name'

Ⅻ).清理partition

ALTER TABLE database.table_name ON cluster cluster_shardNum_replicasNum detach partition 'partition_id'

XIII).查看列的压缩率

SELECT    database,    table,    name,    formatReadableSize(sum(data_compressed_bytes) AS c) AS comp,    formatReadableSize(sum(data_uncompressed_bytes) AS r) AS raw,    c/r AS comp_ratioFROM system.columnsWHERE database='database_name'    AND table='table_name'GROUP BY name

XIV).查看物化视图的磁盘占用

clickhouse-client --query="SELECT partition,count(*) AS partition_num, formatReadableSize(sum(bytes)) AS disk_size FROM system.columns WHERE database='database_name' " --external --?le=***.sql --name=parts --structure='table String, name String, partition UInt64, engine String' -h hostname

以上是“clickhouse批量插入数据及ClickHouse常用命令的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

clickhouse批量插入数据及ClickHouse常用命令的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

clickhouse批量插入数据及ClickHouse常用命令的示例分析

小编给大家分享一下clickhouse批量插入数据及ClickHouse常用命令的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.安装使用ClickHo
2023-06-29

mybatis批量插入10万条数据的示例分析

这篇文章给大家分享的是有关mybatis批量插入10万条数据的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据库 在使用mybatis插入大量数据的时候,为了提高效率,放弃循环插入,改为批量插入,map
2023-06-14

批处理常用DOS中findfindstr命令的示例分析

今天就跟大家聊聊有关批处理常用DOS中findfindstr命令的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.字符串查找:find在文件中搜索字符串。FIND [/V]
2023-06-08

shell脚本中批量复制及执行命令的示例分析

这篇文章主要介绍了shell脚本中批量复制及执行命令的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,
2023-06-09

redis部署及各种数据类型使用命令的示例分析

这篇文章给大家分享的是有关redis部署及各种数据类型使用命令的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。编译安装redis开始部署[root@mcw01 ~]$ lsanaconda-ks.cfg
2023-06-29

vue自定义指令directives及其常用钩子函数的示例分析

这篇文章主要为大家分析了vue自定义指令directives及其常用钩子函数的示例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“vue自定义指令dire
2023-06-28

Python中的基础数据类型及其常用用法的示例分析

Python中的基础数据类型及其常用用法的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法列表首先List是有[]包括的,每个元素用(逗号)隔开,List中可以嵌套任何
2023-06-01

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录