ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析

文章目录

  • PostgreSQL
    • 创建一张表
    • 实施细节
    • 用法示例
  • 资料分享
  • 参考文章

PostgreSQL

PostgreSQL 引擎允许 ClickHouse 对存储在远程 PostgreSQL 服务器上的数据执行 SELECTINSERT 查询.

创建一张表

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],...
) ENGINE = PostgreSQL('host:port', 'database', 'table', 'user', 'password'[, `schema`]);

表结构可以与 PostgreSQL 源表结构不同:

  • 列名应与 PostgreSQL 源表中的列名相同,但您可以按任何顺序使用其中的一些列。
  • 列类型可能与源表中的列类型不同。 ClickHouse尝试将数值映射到ClickHouse的数据类型。
  • 设置 external_table_functions_use_nulls 来定义如何处理 Nullable 列. 默认值是 1, 当设置为 0 时 - 表函数将不会使用 nullable 列,而是插入默认值来代替 null. 这同样适用于数组数据类型中的 null 值.

引擎参数

  • host:port — PostgreSQL 服务器地址.
  • database — 数据库名称.
  • table — 表名称.
  • user — PostgreSQL 用户.
  • password — 用户密码.
  • schema — Non-default table schema. 可选.

实施细节

在 PostgreSQL 上的 SELECT 查询以 COPY (SELECT ...) TO STDOUT 的方式在只读 PostgreSQL 事务中运行,每次 SELECT 查询后提交。

简单的 WHERE 子句,如=!=>>=<<=,和IN是在PostgreSQL 服务器上执行。

所有的连接、聚合、排序、IN [ array ]条件和LIMIT采样约束都是在 PostgreSQL 的查询结束后才在ClickHouse中执行的。

在 PostgreSQL 上的 INSERT 查询以 COPY "table_name" (field1, field2, ... fieldN) FROM STDIN 的方式在 PostgreSQL 事务中运行,每条 INSERT 语句后自动提交。

PostgreSQL 的 Array 类型会被转换为 ClickHouse 数组。

!!! info “Note”
要小心 - 一个在 PostgreSQL 中的数组数据,像type_name[]这样创建,可以在同一列的不同表行中包含不同维度的多维数组。但是在 ClickHouse 中,只允许在同一列的所有表行中包含相同维数的多维数组。

支持设置 PostgreSQL 字典源中 Replicas 的优先级。地图中的数字越大,优先级就越低。最高的优先级是 0

在下面的例子中,副本example01-1有最高的优先级。

<postgresql><port>5432</port><user>clickhouse</user><password>qwerty</password><replica><host>example01-1</host><priority>1</priority></replica><replica><host>example01-2</host><priority>2</priority></replica><db>db_name</db><table>table_name</table><where>id=10</where><invalidate_query>SQL_QUERY</invalidate_query>
</postgresql>
</source>

用法示例

PostgreSQL 中的表:

postgres=# CREATE TABLE "public"."test" (
"int_id" SERIAL,
"int_nullable" INT NULL DEFAULT NULL,
"float" FLOAT NOT NULL,
"str" VARCHAR(100) NOT NULL DEFAULT '',
"float_nullable" FLOAT NULL DEFAULT NULL,
PRIMARY KEY (int_id));CREATE TABLEpostgres=# INSERT INTO test (int_id, str, "float") VALUES (1,'test',2);
INSERT 0 1postgresql> SELECT * FROM test;int_id | int_nullable | float | str  | float_nullable--------+--------------+-------+------+----------------1 |              |     2 | test |(1 row)

ClickHouse 中的表, 从上面创建的 PostgreSQL 表中检索数据:

CREATE TABLE default.postgresql_table
(`float_nullable` Nullable(Float32),`str` String,`int_id` Int32
)
ENGINE = PostgreSQL('localhost:5432', 'public', 'test', 'postges_user', 'postgres_password');
SELECT * FROM postgresql_table WHERE str IN ('test');
┌─float_nullable─┬─str──┬─int_id─┐
│           ᴺᵁᴸᴸ │ test │      1 │
└────────────────┴──────┴────────┘

使用非默认的模式:

postgres=# CREATE SCHEMA "nice.schema";postgres=# CREATE TABLE "nice.schema"."nice.table" (a integer);postgres=# INSERT INTO "nice.schema"."nice.table" SELECT i FROM generate_series(0, 99) as t(i)
CREATE TABLE pg_table_schema_with_dots (a UInt32)ENGINE PostgreSQL('localhost:5432', 'clickhouse', 'nice.table', 'postgrsql_user', 'password', 'nice.schema');

资料分享

ClickHouse经典中文文档分享

参考文章

  • ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
  • ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
  • ClickHouse(03)ClickHouse怎么安装和部署
  • ClickHouse(04)如何搭建ClickHouse集群
  • ClickHouse(05)ClickHouse数据类型详解
  • ClickHouse(06)ClickHouse建表语句DDL详细解析
  • ClickHouse(07)ClickHouse数据库引擎解析
  • ClickHouse(08)ClickHouse表引擎概况
  • ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
  • ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析
  • ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析
  • ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTree详细解析
  • ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
  • ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析
  • ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析
  • ClickHouse(16)ClickHouse日志引擎Log详细解析
  • ClickHouse(17)ClickHouse集成JDBC表引擎详细解析
  • ClickHouse(18)ClickHouse集成ODBC表引擎详细解析
  • ClickHouse(19)ClickHouse集成Hive表引擎详细解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息&#xff0c;还是需要借助 外部的库&#xff0c;我这边尝试了自己去实现它 网上有一些信息&#xff0c;但不太完整&#xff0c;都比较零碎&#xff0c;这边尽量将代码完整的去展示出来 OpenHardwareMonitor获取CPU的温度和频率需要管理员权限 在没…

回顾2023,展望2024

又是一年起始&#xff0c;在这里回顾一下过去&#xff0c;展望一下未来。今年已经是自己的本命年了&#xff0c;龙行龘龘&#xff0c;希望在自己的本位年能够有更多的努力和更多的收获。 关于工作 在无锡工作已经一个完整的年份了&#xff0c;工作上平平稳稳&#xff0c;也适应…

梯度下降法

前言&#xff1a;在均方差损失函数推导中&#xff0c;我使用到了梯度下降法来优化模型&#xff0c;即迭代优化线性模型中的和。现在进一步了解梯度下降法的含义以及具体用法。 一、梯度下降法(入门级理解&#xff09; 定义&#xff1a;梯度下降是一种用于最小化损失函数的优化…

Python爬取今日头条热门文章

前言 今日头条文章收益是没有任何门槛&#xff0c;只要是你发布文章&#xff0c;每篇文章的阅读量超过1000就能有收益&#xff0c;阅读量越多收益越高。于是乎我就有了个大胆的想法。何不利用Python爬虫&#xff0c;爬取热门文章&#xff0c;然后完成自动化发布文章呢&#xf…

专访 | STIF2023第四届国际科创节访第七在线CEO赵嘉程

12月15日&#xff0c;在STIF2023第四届国际科创节暨数服会上&#xff0c;第七在线获得年度数智化创新典范奖&#xff0c;第七在线CEO赵嘉程在颁奖典礼现场接受了媒体专访。 主持人&#xff1a;赵总&#xff0c;您好&#xff0c;欢迎您接受我们的专访&#xff0c;首先我们特别想…

二、Redis的特性与应用场景

Redis是一个在内存中存储数据的中间件&#xff0c;主要用于作为数据库、数据缓存&#xff0c;在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。 一、Redis特性 1、在内存中存储数据 MySQL主要是“表”的方式来存储组织数据的&#xff0c;是“关系型数…

杰发科技AC7840——Eclipse环境DMA注意事项

0.序 用 户 使 用 DMA 时 &#xff0c; 所 有 DMA 搬 运 的 SRAM 数 据 都 必 须 存 放 在 SRAM_U 区 (0x20000000~0x2000EFFF) 。 1. 修改办法 第一步&#xff1a; RAM定义 /* Specify the memory areas */ MEMORY {FLASH (rx) : ORIGIN 0x00000000, LENGT…

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

更新Xcode14后低版本iPhone调试报错 dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib Referenced from: /var/containers/Bundle/Application/…/….app/… Reason: image not found 这是缺少libswiftCoreGraphics库 直接导入libswiftCoreGraphics库即…

【新手小白的xsslab靶场学习】

第1关 最开始页面源代码 直接输入<script>alert(1)</script> 第2关 页面源代码 先尝试<script>alert(1)</script>看页面源代码 <h2>里面尖括号被编码&#xff0c;<input>里面没有编码,直接双引号闭合&#xff0c; 修改payload&…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-01x00

如上表所示&#xff0c;MOE0&#xff0c;OSSI1&#xff0c;CCxE0&#xff0c;CCxNE0时&#xff0c;OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…

elasticsearch-curator: es索引生命周期(关闭、删除索引)

1&#xff0c;下载安装 rpm包下载安装 # 防止安装rpm包报错&#xff1a;error: [upel]: elasticsearch-curator NOKEY &#xff1b; # error: [upel]: elasticsearch-curator signature check fail rpm --import https://artifacts.elastic.co/GPG-KEY-ela…

基于RetinaFace+Jetson Nano的智能门锁系统——第二篇(配置环境)

文章目录 设备一、安装远程登录终端Xshell1.1下载Xshell1.2新建回话1.3查询ip地址1.4启动连接 二、安装远程文件管理WinScp2.1下载WinScp2.2连接Jetson Nano2.3连接成功 三、安装远程桌面VNC Viewer3.1下载VNC Viewer3.2在Jetson Nano安装VNC Viewer3.3设置VINO登录选项3.4将网…

单片机原理及应用:计数按键控制数码管显示

承接上文&#xff0c;我们来介绍一下按键和数码管的配合工作&#xff0c;由于数码管显示的字符和位数多种多样&#xff0c;无法做到一个字符对应一个按键&#xff0c;所以程序主要记录按键的使用次数来切换数码管的显示。 #include <reg52.h> //包含reg52.h头…

opencv003图像裁剪(应用NumPy矩阵的切片)

这一部分相对于马上要学习的二值化是要更更更简单一些的&#xff0c;只需三行&#xff0c;便能在opencv上裁剪图像啦&#xff08;顺便云吸猫&#xff0c;太可爱了&#xff01;&#xff09; 出处见水印&#xff01; 1、复习图像的显示 前几天期末考试&#xff0c;太久没有看…

第28关 k8s监控实战之Prometheus(一)

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。对于运维开发人员来说&#xff0c;不管是哪个平台服务&#xff0c;监控都是非常关键重要的。 在传统服务里面&#xff0c;我们通常会到zabbix、open-falcon、netdata来做服务的监控&#xff0…

error C2666: “Date::operator ==”: 重载函数具有类似的转换

error C2666: “Date::operator ”: 重载函数具有类似的转换 1.错误描述2.解决方案 1.错误描述 class Date { public:Date(int year 2024, int month 1, int day 1){_year year;_month month;_day day;}bool operator(const Date& d){return _year d._year&&…

接入第三方登录

1.进行认证 https://graph.qq.com/oauth2.0/authorize?response_typecode&client_id[YOUR_APPID]&redirect_uri[YOUR_REDIRECT_URI]&scope[THE_SCOPE] https://graph.qq.com/oauth2.0/show?whichLogin&displaypc&client_id101284669&redirect_urih…

认识SpringBoot项目中的Starter

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

流量预测_MLP模型_keras

目录 0、我在干什么&#xff1f;1、import libararies2、加载数据load data3、独家观察数据函数 :heartbeat:4、数据预处理pre-processing&#xff08;1&#xff09;将时间戳转换为一个日期时间索引&#xff08;2&#xff09;填充所有缺失的值&#xff08;3&#xff09;将时间序…

ElasticSearch的DSL查询语法解析

Elasticsearch提供了基于ISON的DSL (Domain Specific Lanquage)来定义查询。 目录 一、常见查询类型 二、DSLQuery基本语法 三、全文检索查询 3.1 match查询&#xff1a;会对用户输入内容分词&#xff0c;常用于搜索框搜索 &#xff0c;语法&#xff1a; 3.2 multi match…