数据仓库服务 GAUSSDB(DWS)-INSERT:参数说明
参数说明
- WITH [ RECURSIVE ] with_query [, ...]
用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表。
如果声明了RECURSIVE,那么允许SELECT子查询通过名字引用它自己。
其中with_query的详细格式为:
with_query_name [ ( column_name [, ...] ) ] AS ( {select | values | insert | update | delete} )
– with_query_name指定子查询生成的结果集名字,在查询中可使用该名称访问子查询的结果集。
– column_name指定子查询结果集中显示的列名。
– 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。
- IGNORE
详细介绍参见UPSERT。
- OVERWRITE
用于标识覆盖式插入方式,使用此种插入方式执行结束后,目标原数据被清空,只存在新插入的数据。
OVERWRITE支持指定列插入的功能,其他列为默认值,若无默认值则为NULL。
- OVERWRITE不要和INSERT INTO这类实时写入的操作并发,否则实时写入数据有被意外清理的风险。
- OVERWRITE适用于大批量数据导入场景,不建议用于少量数据的插入场景。
- 避免对同一张表执行并发insert overwrite操作,否则会出现类似报错“tuple concurrently updated.”。
- 如果集群正在扩缩容,且INSERT OVERWRITE的写入表需要执行数据重分布,则INSERT OVERWRITE会清除当前数据,并自动将插入的数据按扩缩容后的节点来进行数据分布。如果INSERT OVERWRITE和该表的数据重分布过程同时执行,INSERT OVERWRITE会中断该表的数据重分布过程。
- table_name
要插入数据的目标表名。
取值范围:已存在的表名。
- AS
用于给目标表table_name指定别名。alias即为别名的名字。
- column_name
目标表中的字段名:
- 字段名可以有子字段名或者数组下标修饰。
- 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用NULL填充。例如,向一个复合类型中的某些字段插入数据的话,其他字段将是NULL。
- 目标字段(column_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。
- 如果value子句和query中只提供了N个字段,则目标字段为前N个字段。
- value子句和query提供的值在表中从左到右关联到对应列。
取值范围:已存在的字段名。
- expression
赋予对应column的一个有效表达式或值:
- 向表中字段插入单引号时需要使用单引号自身进行转义。
- 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
CREATE TABLE tt01 (id int,content varchar(50)); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE INSERT INTO tt01 values (1,'Jack say ''hello'''); INSERT 0 1 INSERT INTO tt01 values (2,'Rose do 50%'); INSERT 0 1 INSERT INTO tt01 values (3,'Lilei say ''world'''); INSERT 0 1 INSERT INTO tt01 values (4,'Hanmei do 100%'); INSERT 0 1 SELECT * FROM tt01; id | content ----+------------------- 3 | Lilei say 'world' 4 | Hanmei do 100% 1 | Jack say 'hello' 2 | Rose do 50% (4 rows)
- DEFAULT
对应字段名的缺省值。如果没有缺省值,则为NULL。
- query
一个查询语句(SELECT语句),将查询结果作为插入的数据。
- ON DUPLICATE KEY
用于主键或者唯一约束冲突时更新冲突的数据。
duplicate_action指定更新列和更新的数据。
详细介绍参见UPSERT。
- ON CONFLICT
用于主键或者唯一约束冲突时忽略或者更新冲突的数据。
conflict_target用于指定列名index_column_name 、包含多个列名的表达式index_expression或者约束名字constraint_name。作用是用于从列名、包含多个列名的表达式或者约束名推断是否有唯一索引。其中index_column_name和index_expression遵循CREATE INDEX的索引列格式。
conflict_action指定主键或者唯一约束冲突时执行的策略。有两种:
- DO NOTHING冲突忽略。
- DO UPDATE SET冲突更新。 后面指定更新列和更新的数据。
详细介绍参见UPSERT。
- RETURNING
返回实际插入的行,RETURNING列表的语法与SELECT的输出列表一致。
- output_expression
INSERT命令在每一行都被插入之后用于计算输出结果的表达式。
取值范围:该表达式可以使用table的任意字段。可以使用*返回被插入行的所有字段。
- output_name
字段的输出名称。
取值范围:字符串,符合标识符命名规范。
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- GaussDB行转列_数据中台架构pdf_高斯数据库行转列_华为云
- 如何进行日志采集和转储_日志平台_日志接入_日志转储