clickhouse 批量插入数据及ClickHouse常用命令详解

目录
  • 一.安装使用
    • Ⅰ).安装
    • Ⅱ).配置
    • Ⅲ).启停服务
  • 二.常用命令
    • Ⅰ).创建表
    • Ⅱ).创建物化视图
    • Ⅲ).插入数据
    • Ⅳ).查询数据
    • Ⅴ).创建NESTED表
    • Ⅵ).NESTED表数据查询
    • Ⅶ).配置字典项
    • Ⅷ).字典查询
    • Ⅸ).导入数据
    • Ⅹ).导出数据
    • Ⅺ).查看partition状态
    • Ⅻ).清理partition
    • XIII).查看列的压缩率
    • XIV).查看物化视图的磁盘占用

一.安装使用

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

Ⅰ).安装

sudo yum install yum-utils
sudo rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64
sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start
clickhouse-client

Ⅱ).配置

a).clickhouse-server

CLICKHOUSE_USER=username

CLICKHOUSE_LOGDIR=${CLICKHOUSE_HOME}/log/clickhoue-server
CLICKHOUSE_LOGDIR_USER=username
CLICKHOUSE_DATADIR_OLD=${CLICKHOUSE_HOME}/data/old
CLICKHOUSE_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 = MergeTree
PARTITION BY toDate(time/1000)
ORDER BY (id,name)
SETTINGS index_granularity = 8192

Ⅱ).创建物化视图

CREATE MATERIALIZED VIEW database.view_name ON cluster cluster_shardNum_replicasNum
ENGINE = AggregatingMergeTree
PARTITION 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 minAge
FROM datasource.table_name
GROUP 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=1
GROUP BY id, name

Ⅴ).创建NESTED表

CREATE TABLE IF NOT EXISTS database.table_name(
  'id' UInt64,
  'name' String,
  'time' UInt64,
  'age' UInt8,
  'flag' UInt8
nested_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 = MergeTree
PARTITION 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 url
FROM 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_ratio
FROM system.columns
WHERE 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常用命令的文章就介绍到这了,更多相关clickhouse 批量插入内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot+mybatis配置clickhouse实现插入查询功能

    说明 ClickHouse 是一款用于大数据实时分析的列式数据库管理系统,在大数据量查询时有着非常优秀的性能, 但是也有缺点,就是不支持事务,不支持真正的删除 / 更新,所以笔者只演示插入和查询. 1.添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dep

  • clickhouse 批量插入数据及ClickHouse常用命令详解

    目录 一.安装使用 Ⅰ).安装 Ⅱ).配置 Ⅲ).启停服务 二.常用命令 Ⅰ).创建表 Ⅱ).创建物化视图 Ⅲ).插入数据 Ⅳ).查询数据 Ⅴ).创建NESTED表 Ⅵ).NESTED表数据查询 Ⅶ).配置字典项 Ⅷ).字典查询 Ⅸ).导入数据 Ⅹ).导出数据 Ⅺ).查看partition状态 Ⅻ).清理partition XIII).查看列的压缩率 XIV).查看物化视图的磁盘占用 一.安装使用 ClickHouse是Yandex提供的一个开源的列式存储数据库管理系统,多用于联机分析(OLAP

  • hbase shell基础和常用命令详解

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务. 1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase

  • MySql批量插入优化Sql执行效率实例详解

    MySql批量插入优化Sql执行效率实例详解 itemcontractprice数量1万左右,每条itemcontractprice 插入5条日志. updateInsertSql.AppendFormat("UPDATE itemcontractprice AS p INNER JOIN foreigncurrency AS f ON p.ForeignCurrencyId = f.ContractPriceId SET p.RemainPrice = f.RemainPrice * {0},

  • django之常用命令详解

    Django 基本命令 本节主要是为了让您了解一些django最基本的命令,请尝试着记住它们,并且多多练习下 1. 新建一个 django project django-admin.py startproject project-name 一个 project 为一个项目,project-name 项目名称,改成你自己的,要符合Python 的变量命名规则(以下划线或字母开头) 2. 新建 app python manage.py startapp app-name 或 django-admin

  • Maven 配置文件 生命周期 常用命令详解

    当前,JVM生态圈主要的三大构建工具: Apache Ant(带着Ivy) Maven Gradle 对于初学者,Ant是最清晰的,只要读懂Xml配置文件你就能够理解它干了什么,但是ant文件很容易变的更加复杂.Maven有自己的工程目录规则和内置的构建生成周期,从而使构建文件更加简单.gradle有很多开箱即用的插件,语法更加短小精悍,易于理解. 在讲解maven之前这里我们先简单比较下Maven和Ant.下面是一个简单的Ant例子.这个例子可以看出我们需要明确的告诉Ant.我们想让他做什么.

  • Java中的zookeeper常用命令详解

    目录 1.zkCli.sh客户端 2.多节点类型创建 3.查询节点 4.set数据 5.删除节点 6.权限设置 7.其他命令 注意我这里用的是官方最稳定的版本3.7.1,版本之间有个别命令是有差距的! 1.zkCli.sh客户端 zkCli.sh可以理解成客户端,也可以理解成命令行工具,把命令交给他,让他和zk的服务端打交道.类似于mysql,我们安装完mysql想要执行命令,那么就必须要通过mysql -u账号 -p密码进入命令行工具里面,才能执行sql. 在zookeeper/bin 目录下

  • Nodejs中 npm常用命令详解

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包. 1.npm install moduleNames:安装Node模块 安装完毕后会产生一个node_modules目录,其目录下就是安装的

  • Docker常用命令详解

    一. 帮助命令 1. 查看当前docker版本 docker version 2. 显示 Docker 系统信息,包括镜像和容器数 docker info 3. 查看帮助文档,类似于CentOS的Man命令 docker --help 二. 镜像命令 1. 查看本地主机上的镜像: #列出本地所有的镜像(含中间映像层) docker images -a #只显示镜像ID docker images -q #显示完整的镜像信息 docker images --no-trunc 2.搜索镜像:http

  • python中pandas常用命令详解

    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速便捷地处理数据的函数和方法.你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一. 1.pandas pandas 是一个多功能且功能强大的数据科学库. 2.读取数据 pd.read_csv("data.csv") 3.读取指定列 pd.read_csv(&quo

  • Windows 批处理cmd/bat常用命令详解

    目录 Windows批处理(cmd/bat)常用命令教程 常见问题: 前言 什么是批处理? 怎么创建批处理文件? 批处理命令简介 批处理常用命令总结 批处理符号简介 常用DOS命令 Windows Batch 常用命令 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 Windows批处理(cmd/bat)常用命令教程 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末

随机推荐