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"