postgresql
允许对存储在远程 PostgreSQL 服务器上的数据进行 SELECT 和 INSERT 查询.
语法
参数
host:port— PostgreSQL 服务器地址.database— 远程数据库名称.table— 远程表名称.user— PostgreSQL 用户.password— 用户密码.schema— 非默认的表结构. 可选.
返回值
一个表对象,其列数与原 PostgreSQL 表的列数相同。
!!! info "Note"
在INSERT查询中,为了区分表函数postgresql(..)和表名以及表的列名列表,你必须使用关键字FUNCTION或TABLE FUNCTION。请看下面的例子。
实施细节
SELECT查询在 PostgreSQL 上以 COPY (SELECT ...) TO STDOUT 的方式在只读的 PostgreSQL 事务中运行,每次在SELECT查询后提交。
简单的WHERE子句,如=、!=、>、>=、<、<=和IN,在PostgreSQL服务器上执行。
所有的连接、聚合、排序,IN [ 数组 ]条件和LIMIT采样约束只有在对PostgreSQL的查询结束后才会在ClickHouse中执行。
PostgreSQL 上的INSERT查询以COPY "table_name" (field1, field2, ... fieldN) FROM STDIN的方式在 PostgreSQL 事务中运行,每次INSERT语句后自动提交。
PostgreSQL 数组类型将转换为 ClickHouse 数组。
!!! info "Note" 要小心,在 PostgreSQL 中,像 Integer[] 这样的数组数据类型列可以在不同的行中包含不同维度的数组,但在 ClickHouse 中,只允许在所有的行中有相同维度的多维数组。
支持设置 PostgreSQL 字典源中 Replicas 的优先级。地图中的数字越大,优先级就越低。0代表最高的优先级。
示例
PostgreSQL 中的表:
从 ClickHouse 检索数据:
插入数据:
使用非默认的表结构:
另请参阅