INTO OUTFILE 子句
INTO OUTFILE
子句将 SELECT
查询的结果重定向到**客户端**上的文件。
支持压缩文件。压缩类型由文件名扩展名检测(默认使用模式 'auto'
)。或者可以在 COMPRESSION
子句中显式指定。可以在 LEVEL
子句中指定特定压缩类型的压缩级别。
语法
SELECT <expr_list> INTO OUTFILE file_name [AND STDOUT] [APPEND | TRUNCATE] [COMPRESSION type [LEVEL level]]
file_name
和 type
是字符串字面量。支持的压缩类型包括:'none'
、'gzip'
、'deflate'
、'br'
、'xz'
、'zstd'
、'lz4'
、'bz2'
。
level
是数值字面量。支持以下范围内的正整数:对于 lz4
类型为 1-12
,对于 zstd
类型为 1-22
,对于其他压缩类型为 1-9
。
实现细节
- 此功能在命令行客户端和clickhouse-local中可用。因此,通过HTTP 接口发送的查询将失败。
- 如果具有相同文件名的文件已存在,则查询将失败。
- 默认的输出格式为
TabSeparated
(如命令行客户端批处理模式)。使用FORMAT 子句更改它。 - 如果查询中提到了
AND STDOUT
,则写入文件的结果也会显示在标准输出上。如果与压缩一起使用,则纯文本将显示在标准输出上。 - 如果查询中提到了
APPEND
,则输出将附加到现有文件中。如果使用压缩,则无法使用附加。 - 写入已存在的文件时,必须使用
APPEND
或TRUNCATE
。
示例
使用命令行客户端执行以下查询
clickhouse-client --query="SELECT 1,'ABC' INTO OUTFILE 'select.gz' FORMAT CSV;"
zcat select.gz
结果
1,"ABC"