TabSeparated、TabSeparatedRaw、TabSeparatedWithNames和TabSeparatedWithNamesAndTypes

TabSeparated

默认格式,缩写:TSV,换行\n、制表符\t等符号依然显示为\n、\t

列之间使用tab制表符分隔,数据按行写入,每行结尾必须有换行符

可用于查询和插入

CREATE TABLE tsv_demo(srcip String, destip String, time String) ENGINE = TinyLog;

clickhouse-client --query="INSERT INTO test.tsv_demo FORMAT TabSeparated" --max_insert_block_size=100000 < tab.txt

# cat tab.txt
127.0.0.1 192.168.1.11 2020-08-24 17:43:00
192.168.1.100 192.168.1.101 2020-08-24 17:44:00
[root@ch2 tmp]# clickhouse-client
ClickHouse client version 20.3.9.70 (official build).
Connecting to localhost:9300 as user default.
Connected to ClickHouse server version 20.3.9 revision 54433. ch2 :) select * from test.tsv_demo; SELECT *
FROM test.tsv_demo ┌─srcip─────────┬─destip────────┬─time────────────────┐
│ 127.0.0.1 │ 192.168.1.11 │ 2020-08-24 17:43:00 │
│ 192.168.1.100 │ 192.168.1.101 │ 2020-08-24 17:44:00 │
└───────────────┴───────────────┴─────────────────────┘ 2 rows in set. Elapsed: 0.005 sec. ch2 :) exit
Bye.
[root@ch2 tmp]# myc
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 20.3.9.70-ClickHouse Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select * from test.tsv_demo;
+---------------+---------------+---------------------+
| srcip | destip | time |
+---------------+---------------+---------------------+
| 127.0.0.1 | 192.168.1.11 | 2020-08-24 17:43:00 |
| 192.168.1.100 | 192.168.1.101 | 2020-08-24 17:44:00 |
+---------------+---------------+---------------------+
2 rows in set (0.00 sec)
Read 2 rows, 139.00 B in 0.001 sec., 1790 rows/sec., 121.53 KiB/sec.

TabSeparated可以缩写为TSV

clickhouse-client --query="INSERT INTO test.tsv_demo FORMAT TSV" --max_insert_block_size=100000 < tab.txt

ch2 :) select * from test.tsv_demo format TSV;

SELECT *
FROM test.tsv_demo
FORMAT TSV 127.0.0.1 192.168.1.11 2020-08-24 17:43:00
192.168.1.100 192.168.1.101 2020-08-24 17:44:00
127.0.0.1 192.168.1.11 2020-08-24 17:43:00
192.168.1.100 192.168.1.101 2020-08-24 17:44:00

TabSeparatedRaw

TabSeparatedRaw格式可以解析制表、转行符,缩写TSVRaw,TSV不解析
只能在数据查询的时候使用

查询时如果列值中包括\n,则默认为该格式,即select * from a 的效果等价于 select * from a format TSVRaw;

建表语句:
create table escape_demo(name String, addr String, age UInt8, desc String) ENGINE=TinyLog;

# cat rw.txt

xiaomi nanjing\tjiangsu 23 From nanjing
xiaohong zheng\tzhou 23 \x41 gril

 

clickhouse-client --query="insert into test.escape_demo format TSV" < rw.txt

ch2 :) select * from escape_demo;

SELECT *
FROM escape_demo ┌─name─────┬─addr───────────────┬─age─┬─desc─────────┐
│ xiaomi │ nanjing jiangsu │ 23 │ From nanjing │
│ xiaohong │ zheng zhou │ 23 │ A gril │
└──────────┴────────────────────┴─────┴──────────────┘
ch2 :) select * from escape_demo format TSVRaw;

SELECT *
FROM escape_demo
FORMAT TSVRaw xiaomi nanjing jiangsu 23 From nanjing
xiaohong zheng zhou 23 A gril 2 rows in set. Elapsed: 0.005 sec. ch2 :) select * from escape_demo format TSV; SELECT *
FROM escape_demo
FORMAT TSV xiaomi nanjing\tjiangsu 23 From nanjing
xiaohong zheng\tzhou 23 A gril 2 rows in set. Elapsed: 0.004 sec.

TabSeparatedWithNames

在查询时,TabSeparatedWithNames格式的第一行显示列的名称
在数据导入时,第一行完全被忽略,不会解析第一行为表头。
简称:TSVWithNames
在数据查询和数据导入均可使用。

ch2 :) select * from escape_demo format TSVWithNames;

SELECT *
FROM escape_demo
FORMAT TSVWithNames name addr age desc
xiaomi nanjing\tjiangsu 23 From nanjing
xiaohong zheng\tzhou 23 A gril

数据导入:
clickhouse-client --query="INSERT INTO escape_demo FORMAT TSVWithNames" < rw.txt

ch2 :) select * from escape_demo;

SELECT *
FROM escape_demo ┌─name─────┬─addr───────────────┬─age─┬─desc─────────┐
│ xiaomi │ nanjing jiangsu │ 23 │ From nanjing │
│ xiaohong │ zheng zhou │ 23 │ A gril │
│ xiaohong │ zheng zhou │ 23 │ A gril │
└──────────┴────────────────────┴─────┴──────────────┘

rw.txt文件有两行数据,再次导入应该有四行,但使用该格式会认为rw.txt文件的第一行是列的名称,被忽略

TabSeparatedWithNamesAndTypes

在查询时,TabSeparatedWithNamesAndTypes格式在主数据的前面额外显示两行数据,第一行显示列的名称, 第二行显示列的数据类型。
在数据导入时,前面两行的数据完全被忽略。
简写:TSVWithNamesAndTypes
在数据导入和查询时均可使用。

ch2 :) select * from escape_demo format TSVWithNamesAndTypes;

SELECT *
FROM escape_demo
FORMAT TSVWithNamesAndTypes name addr age desc
String String UInt8 String
xiaomi nanjing\tjiangsu 23 From nanjing
xiaohong zheng\tzhou 23 A gril
xiaohong zheng\tzhou 23 A gril

导入时前两行被忽略 ,rw.txt只有两行,所以导入后数据无变化

[root@ch2 tmp]# clickhouse-client --query="INSERT INTO escape_demo FORMAT TSVWithNamesAndTypes" < rw.txt
[root@ch2 tmp]# clickhouse-client
ClickHouse client version 20.3.9.70 (official build).
Connecting to localhost:9300 as user default.
Connected to ClickHouse server version 20.3.9 revision 54433. ch2 :) select * from escape_demo; SELECT *
FROM escape_demo ┌─name─────┬─addr───────────────┬─age─┬─desc─────────┐
│ xiaomi │ nanjing jiangsu │ 23 │ From nanjing │
│ xiaohong │ zheng zhou │ 23 │ A gril │
│ xiaohong │ zheng zhou │ 23 │ A gril │
└──────────┴────────────────────┴─────┴──────────────┘

clickhouse 输入输出格式的更多相关文章

  1. clickhouse输入输出格式 TSKV CSV

    TSKVTSKV格式不适合有大量小列的输出.TSKV的效率并不比JSONEachRow差.TSKV数据查询和数据导入.不需要保证列的顺序. 支持忽略某些值,这些列使用默认值,例如0和空白行.复杂类型的 ...

  2. [ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式

    ACM中巧用文件的输入输出来改写acm程序的输入输出 经常有见大神们使用文件来代替ACM程序中的IO,尤其是当程序IO比较复杂时,可以使自己能够更专注于代码的测试,而不是怎样敲输入. C/C++代码中 ...

  3. c++ --> cin和cout输入输出格式

    cin和cout输入输出格式 Cout 输出 1>. bool型输出 cout << true <<" or " << false < ...

  4. C语言第一次作业——输入输出格式

    题目1温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代码 #include& ...

  5. hdu ACM Steps Section 1 花式A+B 输入输出格式

    acm与oi很大的一个不同就是在输入格式上.oi往往是单组数据,而acm往往是多组数据,而且题目对数据格式往往各有要求,这8道a+b(吐槽..)涉及到了大量的常用的输入输出格式.https://wen ...

  6. topcoder 的一些输入输出格式

    自从上年的11月份参加过TC的比赛后,就再也没有参加了,因为它的输入输出格式比较难接受,还有它的页面字体比较小,看得我很辛苦...藉口藉口--懒而已!不过以后我会尽量去参加的,为了提高自己的编程能力. ...

  7. POJ数据的输入输出格式

    POJ在评阅习题时需要向程序提供输入数据,并获取程序的输出结果.因此提交的程序需按照每个习题具体的输入输出格式要求处理输入输出.有的时候,测评系统给出程序的评判结果是“数据错误”或“结果错误”,有可能 ...

  8. Hadoop MapReduce常用输入输出格式

    这里介绍MapReduce常用的几种输入输出格式. 三种常用的输入格式:TextInputFormat , SequenceFileInputFormat , KeyValueInputFormat ...

  9. Hadoop(七):自定义输入输出格式

    MR输入格式概述 数据输入格式 InputFormat. 用于描述MR作业的数据输入规范. 输入格式在MR框架中的作用: 文件进行分块(split),1个块就是1个Mapper任务. 从输入分块中将数 ...

随机推荐

  1. NAT & 防火墙

    NAT 网络地址转换 NAT产生背景 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联 ...

  2. python中jsonpath模块,解析多层嵌套的json数据

    1. jsonpath介绍用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, ...

  3. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输

    前言   搭建Hi3516的基础虚拟机,为交叉编译环境搭建前期工作.后续会编译一个基本的C语言程序Demo,在HI3516上跑.   虚拟机   开发本对虚拟机做了一些基本要求,如下图:    其实重 ...

  4. 2014年3月5日C#训练

    using System; class Program { static void Main() { Console.WriteLine("请输入两个整数:"); int a = ...

  5. [cf1240F]Football

    (事实上,总是可以让每一场都比,因此$w_{i}$并没有意义) 当$k=2$时,有如下做法-- 新建一个点,向所有奇度数的点连边,并对得到的图求欧拉回路,那么只需要将欧拉回路上的边交替染色,即可保证$ ...

  6. 痞子衡嵌入式:深扒IAR启动函数流程之段初始化函数__iar_data_init3实现

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR启动函数流程里的段初始化函数__iar_data_init3实现. 本篇是 <IAR启动函数流程及其__low_level_ ...

  7. C/C++ Qt 给ListWidget增加右键菜单

    在上一篇博文<C/C++ Qt ListWidget 列表框组件应用>中介绍了ListWidget组件的基本使用技巧,本次将给ListWidget组件增加一个右键菜单,当用户在ListWi ...

  8. Pollard-Rho 算法

    Pollard-Rho 一种复杂度大概在 $ O(n^{\frac 1 4} \log n) $ 的分解质因数方法. Miller-Rabin 给定一个 $ 10^{18} $ 范围的数,判断质数 由 ...

  9. 3个CSS动画库,比Animated还好用,让你的网站酷炫起来

    本文首发于https://www.1024nav.com/tools/css-animation-library 转载请注明出处 整理了日常前端开发中常用的css动画库,让你的网页动起来,可以在生成中 ...

  10. Matlab混合编程

    Matlab混合编程 混合编程目的 在Matlab中采用混合编程目的主要包括 利用已有的函数库,避免重复工作 加速计算,特别是减少循环所用时间 利用GPU等进行异构编程 混合编程方法-mex函数 目前 ...