更新时间:2024-12-10 GMT+08:00

INSERT

功能描述

往HStore表中插入一行或多行数据。

  • 如需使用实时数仓能力,请在DWS控制台创建集群时,选择存算一体1:4云盘规格,了解更多参见存算一体规格
  • 创建DWS集群选择1:8云盘规格为标准数仓,1:4云盘规格为实时数仓,以下内容描述的“实时数仓”、“标准数仓”即通过以上规格区分。

注意事项

  • 当单次插入的数据量大于等于表级参数DELTAROW_THRESHOLD时,数据会直接插入主表生成CU(Compress Unit)。
  • 当插入的数据量小于表级参数DELTAROW_THRESHOLD时,会在辅助Delta表上插入一条类型为I的记录,同时将数据序列化存储到这条记录的values字段。
  • 插入到Delta表的数据跟主表使用全局统一分配的cuid。
  • 插入到delta表的数据依赖autovacuum来merge到主表CU。

语法格式

1
2
3
INSERT [/*+ plan_hint */] [ IGNORE | OVERWRITE ] INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]
    { DEFAULT VALUES
    | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query }

参数说明

  • table_name

    要插入数据的目标表名。

    取值范围:已存在的表名。

  • AS

    用于给目标表table_name指定别名。alias即为别名的名字。

  • column_name

    目标表中的字段名。

  • query

    一个查询语句(SELECT语句),将查询结果作为插入的数据。

示例

创建表reason_t1:
1
2
3
4
5
6
7
-- 创建表reason_t1。
CREATE TABLE reason_t1
(
    TABLE_SK          INTEGER               ,
    TABLE_ID          VARCHAR(20)           ,
    TABLE_NA          VARCHAR(20)
)WITH(ORIENTATION=COLUMN, ENABLE_HSTORE=ON);
向表中插入一条记录:
1
INSERT INTO reason_t1(TABLE_SK, TABLE_ID, TABLE_NA) VALUES (1, 'S01', 'StudentA');
向表中插入多条记录:
1
2
3
4
5
6
7
8
INSERT INTO reason_t1 VALUES (1, 'S01', 'StudentA'),(2, 'T01', 'TeacherA'),(3, 'T02', 'TeacherB');
SELECT * FROM reason_t1 ORDER BY 1;
 TABLE_SK | TABLE_ID | TABLE_NAME
----------+----------+------------
        1 |      S01 |   StudentA
        2 |      T01 |   TeacherA
        3 |      T02 |   TeacherB
(3 rows)