跳至主要内容

如何将数据从 ClickHouse 导出到文件

了解将数据从 ClickHouse 导出到文件的方法,包括 `INTO OUTFILE`、File 表引擎和命令行重定向。

使用 INTO OUTFILE 子句

在你的查询中添加一个 INTO OUTFILE 子句。

例如

SELECT * FROM table INTO OUTFILE 'file'

默认情况下,ClickHouse 使用文件名扩展名来确定输出格式和压缩方式。例如,nyc_taxi 中的所有行都将使用 Parquet 格式导出到 nyc_taxi.parquet

SELECT *
FROM nyc_taxi
INTO OUTFILE 'taxi_rides.parquet'

并且以下文件将是一个压缩的、制表符分隔的文件

SELECT *
FROM nyc_taxi
INTO OUTFILE 'taxi_rides.tsv.gz'

如果 ClickHouse 无法从文件扩展名确定格式,则输出格式默认为 TabSeparated 用于输出数据。要指定 输出格式,请使用 FORMAT 子句

例如

SELECT *
FROM nyc_taxi
INTO OUTFILE 'taxi_rides.txt'
FORMAT CSV

使用 File 表引擎

另一种选择是使用 File 表引擎,ClickHouse 使用该文件存储数据。你可以直接在文件上执行查询和插入操作。

例如

CREATE TABLE my_table (
   x UInt32,
   y String,
   z DateTime
)
ENGINE = File(Parquet)

插入几行

INSERT INTO my_table VALUES
   (1, 'Hello', now()),
   (2, 'World', now()),
   (3, 'Goodbye', now())

该文件存储在 ClickHouse 服务器的 data 文件夹中 - 具体来说,在 /data/default/my_table 中,文件名为 data.Parquet

注意

使用 File 表引擎非常方便地创建和查询文件系统上的文件,但请记住,File 表不是 MergeTree 表,因此你无法获得 MergeTree 带来的所有好处。在方便地以方便的格式将数据导出到 ClickHouse 之外时,请使用 File 以方便操作。

使用命令行重定向

$ clickhouse-client --query "SELECT * from table" --format FormatName > result.txt

请参阅 clickhouse-client

·2 分钟阅读
    © . This site is unofficial and not affiliated with ClickHouse, Inc.