在查询中添加 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 表引擎,即由 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 server 的 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。