日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Default值

本文為您介紹在多個場景下Default值的應(yīng)用以及Holo-Client的Default值映射表信息。

SQL場景

在SQL場景中,如果字段已設(shè)置Default值,在執(zhí)行寫入或更新操作時,若未明確指定該字段的值,系統(tǒng)會自動填充Default值。示例如下。

創(chuàng)建default_test表,并分別為a列和b列設(shè)置Default值。

BEGIN;
CREATE TABLE default_test (
    a int NOT NULL DEFAULT 2023,
    b timestamptz DEFAULT '2023-11-17 10:11:33.276+08',
    PRIMARY KEY (a)
);
COMMIT;
  • 示例1:為a列和b列指定具體值,該指定值將會覆蓋Default值。

    --為帶有Default列(a列和b列)指定具體值
    INSERT INTO default_test VALUES (1, NULL);
    --查詢結(jié)果
    SELECT * FROM default_test;

    返回結(jié)果如下。

    a	b
    1	\N
  • 示例2:未指定b列的具體值,b列將會自動填充Default值。

    --未指定b列的具體值
    INSERT INTO default_test (a) VALUES (2);
    --查詢結(jié)果
    SELECT * FROM default_test;

    返回結(jié)果如下。

    a	 b
    1	 \N
    2	 2023-11-17 10:11:33.276+08
  • 示例3:使用INSERT ON DO NOTHING語句,未指定a列(PK列)的值,系統(tǒng)會將待寫入的b列數(shù)據(jù)視為新增數(shù)據(jù)寫入,并自動為a列填充Default值。

    --INSERT ON DO NOTHING,未指定a列(PK列)的值,系統(tǒng)會將其視作新增數(shù)據(jù)并自動填充a列的Default值。
    INSERT INTO default_test (b) VALUES ('2023-11-18 10:11:33.276+08') ON CONFLICT (a) DO NOTHING;
    --查詢結(jié)果
    SELECT * FROM default_test;

    返回結(jié)果如下。

    a	b
    2	2023-11-17 10:11:33.276+08
    2023	2023-11-18 10:11:33.276+08
    1	\N
  • 示例4:使用INSERT ON CONFLICT DO UPDATE語句,將a、b更新為指定值,覆蓋Default值。

    --使用insert on do update,將a、b更新為指定值,覆蓋Default值。
    INSERT INTO default_test (a, b)VALUES (2,null ) ON CONFLICT (a) DO UPDATE SET (a,b) = ROW(EXCLUDED.*);
    --查詢結(jié)果
    SELECT * FROM default_test;

    返回結(jié)果如下。

    a	b
    1	\N
    2023	2023-11-18 10:11:33.276+08
    2	\N
  • 示例5:使用INSERT ON CONFLICT DO UPDATE語句,僅將b列更新為指定值,覆蓋Default值,a列不做更新。

    --使用INSERT ON CONFLICT DO UPDATE,僅將b列更新為指定值,覆蓋Default值,a列不做更新。
    INSERT INTO default_test (a, b) VALUES (2023,null)ON CONFLICT (a) DO UPDATE SET b = EXCLUDED.b;
    --查詢結(jié)果
    SELECT * FROM default_test;

    返回結(jié)果如下。

    a	b
    2	\N
    1	\N
    2023	\N

Flink寫入Hologres場景

JDBC模式

Flink數(shù)據(jù)寫入過程中,其中未寫入的列表現(xiàn)如下:

  • Nullable字段:

    • 未設(shè)置Default Value,若未指定具體值,寫入Null。

    • 已設(shè)置Default Value,僅在mutatetype參數(shù)設(shè)置為InsertOrUpdate時Default Value才會生效,否則寫入Null。

  • Not Null字段:

    • 未設(shè)置Default Value:

      • EnableDefaultForNotNullColumn參數(shù)設(shè)置為false,若未指定具體值,系統(tǒng)將不會寫入Default Value并拋出異常。

      • EnableDefaultForNotNullColumn參數(shù)設(shè)置為true,Holo-Client將會根據(jù)列的數(shù)據(jù)類型寫入Default Value。例如:空字符串("")

    • 已設(shè)置Default Value:

      • EnableDefaultForNotNullColumn參數(shù)設(shè)置為false,Hologres引擎會計算寫入Default Value。但在Hologres V2.0以下版本中,可能無法進入Fixed plan,從而導(dǎo)致性能問題。

        說明

        若您需要進行實例升級,您可以使用實例升級或加入實時數(shù)倉Hologres交流群申請升級實例,詳情請參見如何獲取更多的在線支持?

      • EnableDefaultForNotNullColumn參數(shù)設(shè)置為true,Holo-Client將會根據(jù)列的數(shù)據(jù)類型寫入Default Value。

fixed copy模式

該模式只支持UPDATE和IGNORE操作,因此,如果你選擇了更新部分列,那么只有這些被選定的列值會被修改,其余列保持不變。如果想實現(xiàn)類型REPLACE的功能,必須在Flink DDL中聲明所有列。其中未寫入的列表現(xiàn)如下:

  • Nullable字段:

    • 未設(shè)置Default Value,寫入Null。

    • 已設(shè)置Default Value,寫入Default value。

  • Not Null字段:

    • 未設(shè)置Default Value,系統(tǒng)將會拋出異常。

    • 已設(shè)置Default Value,寫入Default Value。

bulkload模式(HQEcopy)

該模式不支持UPDATE操作,在寫入Hologres時只寫入選中列的值,其中未寫入的列表現(xiàn)如下:

  • Nullable字段:

    • 未設(shè)置Default Value,寫入Null。

    • 已設(shè)置Default Value,寫入Default Value。

  • Not Null字段

    • 未設(shè)置Default Value,系統(tǒng)將會拋出異常。

    • 已設(shè)置Default Value,寫入Default Value。

說明

Flink寫入Hologres不同模式,詳情請參見實時數(shù)倉Hologres

通過數(shù)據(jù)集成寫入Hologres場景

DataX離線同步

數(shù)據(jù)集成的DataX離線同步場景包括:離線單表同步、離線整庫同步等,詳情請參見Hologres數(shù)據(jù)源。目前數(shù)據(jù)集成默認(rèn)使用JDBC實現(xiàn),在寫入部分列時,其中未寫入的列表現(xiàn)如下:

  • Nullable字段

    • 未設(shè)置Default Value,寫入Null。

    • 已設(shè)置Default Value

      • conflictMode為Replace(整行更新)模式時,寫入Null。

      • conflictMode為Update(更新)模式時,寫入Default Value。

  • Not Null字段

    • 未設(shè)置Default Value

      • default.enable為true(默認(rèn)值),Holo-Client將會根據(jù)列的數(shù)據(jù)類型寫入Default Value。例如:空字符串("")或0。

      • default.enable為false,系統(tǒng)將會拋出異常。

    • 已設(shè)置Default Value

      • default.enable為true(默認(rèn)值),寫入Default Value。

      • default.enable為false,寫入Default Value。但在Hologres V2.0以下版本中,可能無法進入Fixed plan,從而導(dǎo)致性能問題。

StreamX實時同步

數(shù)據(jù)集成的StreamX實時同步場景包括:實時單表同步等,詳情請參見Hologres數(shù)據(jù)源。目前數(shù)據(jù)集成默認(rèn)使用JDBC實現(xiàn),在寫入部分列時,其中未寫入的列表現(xiàn)如下:

  • Nullable字段

    • 未設(shè)置Default Value,寫入Null。

    • 已設(shè)置Default Value

      • conflictMode為Replace(整行更新)或Ignore(忽略)模式時,寫入Null。

      • conflictMode為Update(更新)模式時,寫入Default Value。

  • Not Null字段

    • 未設(shè)置Default Value

      • default.enable為true(默認(rèn)值),Holo-Client將會根據(jù)列的數(shù)據(jù)類型寫入Default Value。例如:空字符串("")或0。

      • default.enable為false,系統(tǒng)將會拋出異常。

    • 已設(shè)置Default Value

      • default.enable為true(默認(rèn)值),寫入Default Value。

      • default.enable為false,寫入Default Value。但在Hologres V2.0以下版本中,可能無法進入Fixed plan,從而導(dǎo)致性能問題。

        說明

        若您需要進行實例升級,您可以使用實例升級或加入實時數(shù)倉Hologres交流群申請升級實例,詳情請參見如何獲取更多的在線支持?

Holo-Client Default Value映射表

Flink以及DataWorks數(shù)據(jù)集成采用Hologres Connector通過JDBC模式進行交互,統(tǒng)一使用Holo-Client實現(xiàn)。在執(zhí)行部分列寫入操作時,默認(rèn)會配置default.enable為true(enableDefaultForNotNullColumn)屬性。對于沒有顯示寫入的列,并未設(shè)置Default Value,那么Holo-Client會根據(jù)列的不同類型寫入相應(yīng)的Default Value。Default Value映射表如下所示。

類型

Holo-Client自動化填充Default Value

SMALLINT

0

INTEGER

BIGINT

REAL

0.0

DOUBLE PRECISION

DECIMAL

0

BOOLEAN

false

VARCHAR(n)

""

CHAR(n)

TEXT

TIMESTAMPTZ

1970-01-01 08:00:00

TIMESTAMP

DATE

1970-01-01

TIMETZ

08:00:00

TIME

JSON和JSONB

不支持寫入Default Value

BYTEA

RoaringBitmap

BIT(n)

VARBIT(n)

INTERVAL