日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/1/3 数据库 32 coder
生活随笔 收集整理的這篇文章主要介紹了 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 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表引擎详细解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。