TabSeparated(默认格式,简写:TSV)
数据的导入导出
数据按行写入,tab制表符分隔。使用严格Unix命令行。
注意
注意:最后一行必须包含换行符。
格式的适用范围
数据插入和数据查询时,均可使用。
案例演示
进入clickhouse 创建数据库创建数据表
clickhouse-client -m
#进入clickhouse创建数据库
create database if not exists test;
#创建所需表
use test;
CREATE TABLE tsv_demo(srcip String, destip String, time String) ENGINE = TinyLog;
创建tsv_demo01.tsv文件,填写内容
# 创建tsv_demo01.tsv文件
vim tsv_demo01.tsv
# 数据导入
clickhouse-client --query "INSERT INTO test.tsv_demo FORMAT TabSeparated" --max_insert_block_size=100000 < tsv_demo01.tsv
可能会出现报错情况
[root@ch01 clickhouseData]# clickhouse-client --query "INSERT INTO test.tsv_demo FORMAT TabSeparated" --max_insert_block_size=100000 < tsv_demo01.tsv
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给去掉。
解决办法
将tsv_demo01.tsv转换为UNIX格式
dos2unix tsv_demo.tsv
备注: dos2unix命令没有可以使用yum安装yum install -y dos2unix
进行指定输出格式查询
select * from tsv_demo FORMAT TSV;
TabSeparatedRaw(简称:TSVRaw)
数据的导入导出
与TabSeparated没有太大区别,TabSeparatedRaw格式不会对行数据进行转义, 即不会将换行、制表符等转换为转义字符。
格式的适用范围
只能在数据查询的时候使用。
案例演示
进入clickhouse 创建数据表
clickhouse-client -m
#创建所需表
use test;
create table escape_demo(name String, addr String, age UInt8, desc String) ENGINE=TinyLog;
创建escape_demo.tsv文件,制造数据
# 创建escape_demo.tsv文件
vim escape_demo.tsv
# 数据导入
clickhouse-client --query="insert into test.escope_demo FORMAT TSV" < escape_demo.tsv
进行指定输出格式查询
select * from escape_demo FORMAT TSV;
TabSeparatedWithNames(简称:TSVWithNames)
数据的导入导出
- 在查询时,TabSeparatedWithNames格式的第一行显示列的名称
- 在数据导入时,第一行完全被忽略,不会解析第一行为表头。
格式的适用范围
在数据查询和数据导入均可使用
案例演示
导入数据
clickhouse-client --query="INSERT INTO test.escape_demo FORMAT TSVWithNames" < escape_demo.tsv
数据查询
select * from escape_demo FORMAT TSVWithNames;
TabSeparatedWithNamesAndTypes(简写:TSVWithNamesAndTypes)
数据的导入导出
- 在查询时,TabSeparatedWithNamesAndTypes格式在主数据的前面额外显示两行数据,第一行显示列的名称, 第二行显示列的数据类型。
- 在数据导入时,前面两行的数据完全被忽略。
格式的适用范围
在数据导入和查询时均可使用
案例演示
select * from escape_demo FORMAT TabSeparatedWithNamesAndTypes;