ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析
-
PostgreSQL
- 創建一張表
- 實施細節
- 用法示例
- 資料分享
- 參考文章
PostgreSQL
PostgreSQL 引擎允許 ClickHouse 對存儲在遠程 PostgreSQL 服務器上的數據執行 SELECT 和 INSERT 查詢.
創建一張表
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 TABLE
postgres=# INSERT INTO test (int_id, str, "float") VALUES (1,'test',2);
INSERT 0 1
postgresql> 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表引擎詳細解析
總結
以上是生活随笔為你收集整理的ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新iPhone发布老手机就会变慢吗
- 下一篇: 玩具店名830个