clickhouse导出建表语句DDL换行符的问题

今天需要把一个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

看来网上的绝大多数文章都抄袭,基本没有真正测试过

分享

TITLE: clickhouse导出建表语句DDL换行符的问题

LINK: https://www.qttc.net/558-clickhouse-export-ddl.html

NOTE: 原创内容,转载请注明出自琼台博客