今天需要把一个clickhouse的实例转移到另外一个实例,本来要使用clickhouse-backup工具,但最终总是导出metadata,没有包含实际数据,没办法只能放弃,使用脚本的方式导出建表语句,再导出CSV的数据。
然而在导出建表语句的时候,非常奇怪,在clickhouse CLI下总是看起来正常
$ SHOW CREATE TABLE analysis.spm_dictionary
SHOW CREATE TABLE analysis.spm_dictionary
Query id: 0bd7cb9d-b92a-4625-9ca9-eb306ce77fd3
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE analysis.spm_dictionary
(
`spm_b` String,
`name` String
)
ENGINE = MergeTree
ORDER BY spm_b
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
1 row in set. Elapsed: 0.014 sec.
然而,在导出到sql文件时,总是转义了换行符,变成这样
$ clickhouse-client -m -q "SHOW CREATE TABLE analysis.spm_dictionary"
CREATE TABLE analysis.spm_dictionary\n(\n `spm_b` String,\n `name` String\n)\nENGINE = MergeTree\nORDER BY spm_b\nSETTINGS index_granularity = 8192
很明显,导出的SQL内容里转义了换行符"\n",这自然在导入时无法使用,比较奇怪的是网上绝大多数的站点都是这么写的,难道它们的可以工作,我的就特殊了?
耗了将近一个小时,发现没有什么结果,只能看下官方文档,发现有一个--format
参数引起了我的注意,查看了一下发现有一个TabSeparatedRaw
映入我的眼帘,顿时欲哭无泪,赶紧试一下,结果显示正常了,问题解决
$ clickhouse-client -q "SHOW CREATE TABLE analysis.spm_dictionary" --format TabSeparatedRaw
CREATE TABLE analysis.spm_dictionary
(
`spm_b` String,
`name` String
)
ENGINE = MergeTree
ORDER BY spm_b
SETTINGS index_granularity = 8192
看来网上的绝大多数文章都抄袭,基本没有真正测试过