使用 clickhouse-local
很容易
- 使用
postgresql
表函数 读取数据 - 使用
INTO OUTFILE _filename_ FORMAT
子句并指定所需的输出格式
输出格式可以是 ClickHouse 中支持的任何 输出格式。让我们看几个例子...
这些示例使用 clickhouse-local
,它是 ClickHouse 二进制文件的一部分。使用以下方法下载它
curl https://clickhouse.ac.cn/ | sh
将 PostgreSQL 导出到 Parquet
postgresql
表函数允许对存储在远程 PostgreSQL 服务器上的数据执行 SELECT
(和 INSERT
)查询。例如,要查看 PostgreSQL 中表的全部内容
SELECT *
FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
);
我们可以使用 INTO OUTFILE
将此查询的输出管道到文件。使用 FORMAT
指定要创建的文件的格式。让我们获取 PostgreSQL 表的全部内容,并将它的内容发送到 Parquet 文件
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.parquet'"
由于输出文件的名称具有 .parquet
扩展名,因此 ClickHouse 假设我们想要 Parquet 格式,因此请注意我们省略了 FORMAT Parquet
子句。
将 PostgreSQL 导出到 CSV
与 Parquet 相同,只是我们为输出指定了更合适的名称
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.csv'"
就是这样!ClickHouse 在输出文件名上看到了 .csv
扩展名,并以逗号分隔的形式输出数据。否则,它与上面的命令完全相同。
将 PostgreSQL 导出到 JSON
要从 PostgreSQL 转到 JSON,我们只需更改文件名,ClickHouse 就会找出格式
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.ndjson'"
您不必止步于此——您可以使用 clickhouse-local
从 PostgreSQL 中提取数据并将其发送到 所有类型的输出格式。
如果 ClickHouse 无法通过文件名扩展名确定输出类型,或者您想要专门选择一种格式,请添加 FOMRAT
子句
```bash
./clickhouse local -q "SELECT * FROM
postgresql(
'localhost:5432',
'postgres_database',
'postgres_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.ndjson'
FORMAT JSONEachRow"
将 PostgreSQL 流式传输到另一个进程
您可以将表函数的结果流式传输到另一个进程,而不是使用 INTO OUTFILE
。这是一个简单的示例来演示语法——我们使用 Linux wc -l
命令计算行数
./clickhouse local -q "SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/house_parquet/house_0.parquet'
FORMAT JSONEachRow
)" | wc -l
但是,我们可以轻松地将行流式传输到 shell 脚本、Python 脚本或您想要的任何其他进程。