今天的主题,不用写序言,看上图就懂
如何用SQL的方式操作一个文件
先举例
- 想知道history命令里,敲得最多的是哪个?
- 当然,sed,awk完全可以做到,但是,如果用SQL怎么做?
|
|
原理
- ClickHouse支持把一个外部文件,加载到内部的一个临时表中,对这个临时表进行SQL化操作
格式
|
|
--external
表示这个操作是外部文件的--file=...
指定一个文件,如果是标准输入,则写-
[--name=...]
表名,如果忽略,默认给_data
[--format=...]
列分隔符,默认是TabSeparated
- `[–types=…|–structure=…] 这句不解释了,看上面的例子就好了
再来一个测试
- 为了模拟一个有意义的场景,我们选了ClickHouse的system.parts这个表,里面记录的是ClickHouse的分区信息,表结构如下
|
|
- 我们导出一份数据,作为测试文件
- 默认导出的文件是tab分割
|
|
- 目标SQL
- 找某个表的分区数据,即有几个分区,分区文件多大
|
|
- 文件SQL
|
|
注意事项
- 文件操作虽然方便,但是官方文档也提到了,如果是特别大的文件,还是不要这么玩了
- 另外,这个文件SQL其实还是要依赖ClickHouse-Server的,如果你没有启动Server,玩不了的哦~