1.TabSeparated格式,简称TSV
- 默认格式,缩写:TSV,换行\n、制表符\t等符号依然显示为\n、\t
- 列之间使用tab制表符分隔,数据按行写入,每行结尾必须有换行符
- 可用于查询和插入
例如:
1)数据导入:
1.1)新建一张测试表
CREATE TABLE tsv_demo(srcip String, destip String, time String) ENGINE = TinyLog;
1.2)准备一个tab.txt文件,里面的数据以tab制表符为间隔
1.3)上传到服务器上,使用导入命令以TabSeparated格式导入,TabSeparated可以简写成TSV
clickhouse-client --query="INSERT INTO tutorial.tsv_demo FORMAT TabSeparated" --max_insert_block_size=100000 < tab.txt 或者 clickhouse-client --query="INSERT INTO tutorial.tsv_demo FORMAT TSV" --max_insert_block_size=100000 < tab.txt
1.4)出现错误
Code: 117. DB::Exception: You have carriage return (\r, 0x0D, ASCII 13) at end of first row. It's like your input data has DOS/Windows style line separators, that are illegal in TabSeparated format. You must transform your file to Unix format. But if you really need carriage return at end of string value of last column, you need to escape it as \r.
原因:这是由于windows使用\r\n表示回车换行, 在linux中使用\n表示换行。 因此,需要将\r给去掉
命令:dos2unix 文件名称
1.5)最后再次导入成功,查看结果
2)数据查询输出格式化为TSV格式
命令:select * from tsv_demo FORMAT TSV或者select * from tsv_demo FORMAT TabSeparated
2.TabSeparatedRaw格式,简写为TSVRaw
- TabSeparatedRaw格式可以解析制表、转行符,缩写TSVRaw,TSV不解析
- 只能在数据查询的时候使用
- 查询时如果列值中包括\n,则默认为该格式,即select * from a 的效果等价于 select * from a format TSVRaw;
例如:
2.1)新建一张表
create table escape_demo(name String, addr String, age UInt8, desc String) ENGINE=TinyLog;
2.2)准备一个rw.txt文件,里面的数据如下
2.3)使用命令导入数据(导入之前需要使用dos2unix 文件名称转换一下)
命令:clickhouse-client --query="insert into tutorial.escape_demo format TSV" < rw.txt
2.4)直接使用select查询
2.5) 使用TSVRaw格式化查询
2.6)使用TSV格式化查询
3.TabSeparatedWithNames,简称TSVWithNames
- 在查询时,TabSeparatedWithNames格式的第一行显示列的名称
- 在数据导入时,第一行完全被忽略,不会解析第一行为表头。
- 简称:TSVWithNames
- 在数据查询和数据导入均可使用。
3.1)查询使用TSVWithNames格式化
命令:select * from escape_demo format TSVWithNames;
3.2)数据导入
命令:clickhouse-client --query="INSERT INTO tutorial.escape_demo FORMAT TSVWithNames" < rw.txt
查看当前有4条数据:
执行导入后:
rw.txt文件有两行数据,再次导入应该有6行,但使用该格式会认为rw.txt文件的第一行是列的名称,被忽略
4.TabSeparatedWithNamesAndTypes,简称TSVWithNamesAndTypes
- 在查询时,TabSeparatedWithNamesAndTypes格式在主数据的前面额外显示两行数据,第一行显示列的名称, 第二行显示列的数据类型。
- 在数据导入时,前面两行的数据完全被忽略。
- 简写:TSVWithNamesAndTypes
- 在数据导入和查询时均可使用。
4.1)在查询时使用
命令:select * from escape_demo format TSVWithNamesAndTypes;
4.2)导入时前两行被忽略 ,rw.txt有3行,所以导入后数据加一条
命令:clickhouse-client --query="INSERT INTO tutorial.escape_demo FORMAT TSVWithNamesAndTypes" < rw.txt
原来的数据:
执行命令后: