Postgres上有一个OLTP数据库,您需要在ClickHouse中从该数据库获取查询结果。那些。创建某种简化的 DWH,其中将存储简单的“视图”,以便在 BI 工具中进一步可视化。
Postgres 和 ClickHouse 位于两台不同的机器上。如何尽快(或至少正确)执行此操作?
到目前为止,出于无知,我正在这样做:
- 使用 read_sql 读取 Pandas 中的查询结果。
- 无论我是否使用这个数据框做其他事情,它都是可选的。
- 我将数据帧逐行拆分为元组列表,并通过批量插入 50-100k 条记录将它们加载到 ClickHouse 中。
Python 本身又在我的 PC 上使用,即 我首先将 Postgres 中的所有内容下载到我的 PC,然后从 PC 下载到 ClickHouse。效果不是很快,我觉得还有其他方法。
有一个类似的主题,但它讨论如何将特定表从一个数据库传输到另一个数据库。 https://stackoverflow.com/questions/73377036/how-to-etl-my-postgresql-data-into-a-clickhouse-datawarehouse
也许我的方法从根本上是错误的,我需要将所有表传输到 ClickHouse,并在此基础上执行查询?
Clickhouse 有一个用于连接 Postgres 的驱动程序
https://clickhouse.com/docs/en/integrations/postgresql
使用 MaterializedPostgreSQL 选项复制数据或使用 PostgreSQL 转发查询。
会不断地将table1的更改复制到clickhouse。您可以指定表的列表。在这种情况下,表在 clickhouse 端通过联接进行联接。
您可以在 postgres 端的视图中构建联接。然后通过PostgreSQL连接查看。
其中 table1 是准备好的视图