跳到主要内容
跳到主要内容

INTO OUTFILE 子句

INTO OUTFILE 子句会将 SELECT 查询的结果重定向到客户端本地的文件中。

支持压缩文件。压缩类型通过文件扩展名自动检测(默认使用 'auto' 模式),也可以在 COMPRESSION 子句中显式指定。某种压缩类型的压缩级别可以在 LEVEL 子句中指定。

语法

SELECT <expr_list> INTO OUTFILE file_name [AND STDOUT] [APPEND | TRUNCATE] [COMPRESSION type [LEVEL level]]

file_nametype 是字符串字面量。支持的压缩类型包括:'none''gzip''deflate''br''xz''zstd''lz4''bz2'

level 是数值字面量。支持的正整数范围为:lz4 类型为 1-12zstd 类型为 1-22,其他压缩类型为 1-9

实现细节

  • 此功能可在命令行客户端clickhouse-local 中使用。因此,通过 HTTP 接口 发送的查询将会失败。
  • 如果已存在同名文件,查询将会失败。
  • 默认的输出格式TabSeparated(与命令行客户端批处理模式相同)。使用 FORMAT 子句来更改输出格式。
  • 如果在查询中包含 AND STDOUT,则写入文件的输出也会同时显示到标准输出上。如果启用了压缩,标准输出上显示的是未压缩的明文。
  • 如果在查询中包含 APPEND,则输出会追加到已有文件中。如果使用压缩,则不能与 APPEND 同时使用。
  • 当写入已存在的文件时,必须使用 APPENDTRUNCATE

示例

使用命令行客户端执行以下查询:

clickhouse-client --query="SELECT 1,'ABC' INTO OUTFILE 'select.gz' FORMAT CSV;"
zcat select.gz 

结果:

1,"ABC"