说明
TSV。
TabSeparated 格式便于使用自定义程序和脚本处理数据。它是 HTTP 接口以及命令行客户端批次模式的默认格式。该格式还支持在不同的 DBMS 之间传输数据。例如,你可以从 MySQL 获取转储并上传到 ClickHouse,反之亦然。
TabSeparated 格式支持输出总计值 (使用 WITH TOTALS 时) 和极值 (当 ‘extremes’ 设置为 1 时) 。在这些情况下,总计值和极值会在主数据之后输出。主结果、总计值和极值之间以空行分隔。示例:
数据格式化
YYYY-MM-DD hh:mm:ss 格式写入,并按相同格式解析,但分隔符可以是任意字符。
这些操作都基于客户端或服务器启动时的系统时区 (取决于由哪一方格式化数据) 。对于带时间的日期,夏令时未作规定。因此,如果某个转储包含夏令时期间的时间,则该转储无法与数据形成唯一对应关系,解析时会在两个时间中选取一个。
读取时,错误的日期和带时间的日期可能按自然溢出方式解析,或者被解析为空日期和时间,且不会报错。
例外情况下,如果带时间的日期恰好由 10 位十进制数字组成,也支持按 Unix 时间戳格式解析。结果不受时区影响。格式 YYYY-MM-DD hh:mm:ss 和 NNNNNNNNNN 会自动区分。
String 输出时,特殊字符会使用反斜杠转义。输出使用以下转义序列:\b、\f、\r、\n、\t、\0、\'、\\。解析时还支持 \a、\v 和 \xHH (十六进制转义序列) ,以及任意 \c 序列,其中 c 可以是任意字符 (这些序列会被转换为 c) 。因此,读取数据时支持以下格式:换行既可以写成 \n、\,也可以直接写成换行符。例如,字符串 Hello world 如果单词之间不是空格而是换行符,则可以按以下任一形式解析:
[] 中以逗号分隔的值列表。数组中的数值项按常规方式格式化。Date 和 DateTime 类型用单引号括起来。String 也用单引号括起来,并遵循与上述相同的转义规则。
NULL 的格式由设置 format_tsv_null_representation 决定 (默认值为 \N) 。
在输入数据中,ENUM 值可以表示为名称或 id。首先,我们会尝试将输入值与 ENUM 名称匹配。如果失败,且输入值是数字,则会尝试将该数字与 ENUM id 匹配。
如果输入数据只包含 ENUM id,建议启用设置 input_format_tsv_enum_as_number 以优化 ENUM 解析。
Nested 结构中的每个元素都表示为数组。
例如:
示例用法
插入数据
football.tsv 的 TSV 文件:
读取数据
TabSeparated 格式读取数据: