更新时间:2024-09-12 GMT+08:00
INSERT
功能描述
往HStore表中插入一行或多行数据。
注意事项
- 当单次插入的数据量大于等于表级参数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) |
父主题: 实时数仓语法