如何从 ClickHouse 导出数据到文件
·2 分钟阅读
了解从 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。