插入

适用于:检查标记是的砖的SQL检查标记是的砖运行时

将新行插入一个表和可选地对表或截断分区。你指定的插入的行值表达式或一个查询的结果。

砖SQL支持这句话只对三角洲湖表。

语法

插入{覆盖|}(]table_name(分区条款]((column_name(,])|通过的名字]查询插入(]table_name取代在哪里谓词查询

请注意

当你插入δ表模式支持执法和演化。如果一个列的数据类型不能安全地把δ表的数据类型,一个运行时异常。如果模式演化启用新列可以作为最后一列你的存在模式(或嵌套列)模式演变。

参数

  • 覆盖

    如果您指定覆盖以下应用:

    • 没有一个partition_spec表插入第一行之前被截断。

    • 否则,匹配的所有分区partition_spec在插入之前截断第一行。

    如果您指定所有行插入附加到现有的行。

  • table_name

    标识表插入。必须不包含一个名称时间规范。如果表不能发现砖了TABLE_OR_VIEW_NOT_FOUND错误。

    table_name不得外国表。

  • 分区条款

    一个可选参数,指明目标分区的插入。你也只是部分指定分区。

    当指定静态分区=价值这一列不能重复在插入列清单中。

  • (column_name[…])

    一个可选列表列在表中。插入命令可以指定任何特定列的表最多一次。

    适用于:检查标记是的砖的SQLSQL仓库2023.20版本或更高版本检查标记是的砖运行时12.2及以上

    • 如果该命令省略了一个专栏,砖SQL分配相应的默认值。

    • 如果目标表模式没有定义任何默认值插入列,砖SQL分配如果列可以为空。否则,砖SQL提出了一个错误。

    提供没有相当于指定所有列列名单,除了那些分配值分区条款,在订单表中定义。

  • 通过的名字

    适用于:检查标记是的砖运行时13.3及以上

    当这一条款是用来代替显式列列表,命令使用公开的列名查询产生的列列表的顺序查询。与一个明确的列列表,每一列必须存在于目标表,不得重复。如果一个列中table_name不是隐含列列表的一部分默认的值代替。

    通过的名字也匹配的属性结构体的名字。

    没有列查询匹配一个列中指定的吗分区条款或任何生成的列。

  • 替代的地方boolean_expression

    适用于:检查标记是的砖的SQL检查标记是的砖运行时12.0及以上

    如果table_name是一个三角洲湖表,删除行匹配boolean_expression在插入任何行匹配布尔表达式中指定的查询。行查询它不匹配boolean_expression将被忽略。

    boolean_expression可以是任何表达式,计算结果类型吗布尔

    看到任意选择与replaceWhere覆盖

  • 查询

    一个查询产生行插入。

    你必须匹配查询返回的列数与指定的或隐含插入列清单。

    如果一个数据类型不能安全地把匹配的列的数据类型,一个运行时异常。

    适用于:检查标记是的砖的SQLSQL仓库2022.35版本或更高版本检查标记是的砖运行时11.2及以上

    • 如果查询由一个条款的表达式可以默认的

    • 如果查询由一个选择条款的named_expression可以默认的

    • 默认的将插入显式定义的默认的表达式中相应的列table_name,或如果没有定义。

    如果模式演化启用新列可以作为最后一列你的存在模式(或嵌套列)模式演变。

例子

插入

插入使用值

>创建学生(的名字VARCHAR(64年),地址VARCHAR(64年)默认的“未知”,student_idINT)分区通过(student_id);使用“值”——单行插入条款指定所有列。>插入学生(艾米·史密斯的,公园大街123号,圣何塞,111111年);——单行插入使用一个隐式的默认地址>插入学生(的名字,student_id)(格雷森·米勒的,222222年);——单行插入使用显式的默认关键字地址>插入学生(“Youna金”,默认的,333333年);使用“值”条款——多行插入>插入学生(“鲍勃·布朗”,456年泰勒圣,库比蒂诺,444444年),(“凯茜约翰逊”,“种族大街789号,帕洛阿尔托”,555555年);——多行插入使用的默认和文本>插入学生(“赵格温妮斯”,120年主要圣Rockport”,666666年),(“杰克逊彼得森”,默认的,777777年);>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公园大街,111111年格雷森米勒未知的222222年Youna未知的333333年鲍勃布朗456年泰勒,库比蒂诺444444年凯西约翰逊789年比赛大街,加州中音555555年格温妮斯120年主要,Rockport666666年杰克逊彼得森未知的777777年

插入使用子查询

——假设人表已经创建并填充。>选择*;的名字地址ssn- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -朵拉威廉姆斯134年森林大街,梅洛公园123456789埃迪戴维斯245年市场,苗必达345678901>插入学生分区(student_id=444444年)选择的名字,地址在哪里的名字=“朵拉·威廉姆斯”;>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公园大街,111111年鲍勃布朗456年泰勒,库比蒂诺222222年凯西约翰逊789年比赛大街,加州中音333333年朵拉威廉姆斯134年森林大街,梅洛公园444444年

插入使用条款

——假设visiting_students表已经创建并填充。>选择*visiting_students;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -弗勒劳伦特345年,伦敦777777年戈登马丁779年大街,牛津大学888888年>插入学生visiting_students;>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公园大街,111111年鲍勃布朗456年泰勒,库比蒂诺222222年凯西约翰逊789年比赛大街,加州中音333333年朵拉威廉姆斯134年森林大街,梅洛公园444444年弗勒劳伦特345年,伦敦777777年戈登马丁779年大街,牛津大学888888年

插入一个目录

>创建学生(的名字VARCHAR(64年),地址VARCHAR(64年),student_idINT)分区通过(student_id)位置“/ mnt / user1 /学生”;>插入δ' /mnt/user1/学生(艾米·史密斯的,公园大街123号,圣何塞,111111年);>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公园大街,111111年

插入一列名单

>插入学生(地址,的名字,student_id)(“杭州”,“肯特么”,11215016);>选择*学生在哪里的名字=“肯特么”;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -肯特杭州,中国11215016

插入一个分区规范和一个列清单

>插入学生分区(student_id=11215017)(地址,的名字)(“杭州”,“肯特么。”);>选择*学生在哪里student_id=11215017;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -肯特杭州,中国11215017

插入使用的名字条款

>创建表目标(n INT,文本字符串,STRUCT b < INT, INT >);>插入目标按名称选择named_struct (“b”2“, 1)年代,0 n,“数据”作为文本;从目标> SELECT *;0数据{“a”: 1、“b”: 2} >创建或替换表目标(arr n INT数组< STRUCT < a INT, INT > >);>插入目标按名称选择阵列(named_struct (“b”2“, 1))作为加勒比海盗,0 n;>插入目标按名称选择阵列(named_struct (“b”2“, 1))加勒比海盗;从目标> SELECT *;0 [{“a”: 1、“b”: 2}]零[{“a”: 1、“b”: 2}] >插入目标按名称选择数组(named_struct (' b ' 2 ' ', 1))作为加勒比海盗,0 badname;错误>插入目标按名称选择阵列(named_struct (“b”2“, 1))作为加勒比海盗,0 n, n 1;错误:INSERT_COLUMN_ARITY_MISMATCH.TOO_MANY_DATA_COLUMNS

替代的地方

>创建销售(tx_date日期,整数);>插入销售(日期“2022-10-01”,1234年),(日期“2022-10-02”,2345年),(日期“2022-10-03”,3456年),(日期“2022-11-01”,3214年);——任何行替换为一个事务日期2022年10月。>插入销售取代在哪里tx_date之间的“2022-10-01”“2022-10-31”(日期“2022-10-01”,1237年),(日期“2022-10-02”,2378年),(日期“2022-10-04”,2456年),(日期“2022-10-05”,6328年);>选择*销售订单通过tx_date;tx_date- - - - - - - - - - - - - - - - -2022年- - - - - -10- - - - - -011237年2022年- - - - - -10- - - - - -022378年2022年- - - - - -10- - - - - -042456年2022年- - - - - -10- - - - - -05年6328年2022年- - - - - -11- - - - - -013214年

插入覆盖

插入使用条款

——假设学生已经创建并填充表。>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公园大街,111111年鲍勃布朗456年泰勒,库比蒂诺222222年凯西约翰逊789年比赛大街,加州中音333333年朵拉威廉姆斯134年森林大街,梅洛公园444444年弗勒劳伦特345年,伦敦777777年戈登马丁779年大街,牛津大学888888年海伦戴维斯469年任务,迭戈999999年杰森908年,萨拉托加121212年>插入覆盖学生(“Ashua山”,456年埃里卡Ct,库比蒂诺,111111年),(“布莱恩·里德”,Kern大街723号,帕洛阿尔托,222222年);>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Ashua456年艾丽卡Ct,库比蒂诺111111年布莱恩里德723年克恩大街,加州中音222222年

插入使用子查询

——假设人表已经创建并填充。>选择*;的名字地址ssn- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -朵拉威廉姆斯134年森林大街,梅洛公园123456789埃迪戴维斯245年市场,苗必达345678901>插入覆盖学生分区(student_id=222222年)选择的名字,地址在哪里的名字=“朵拉·威廉姆斯”;>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Ashua456年艾丽卡Ct,库比蒂诺111111年朵拉威廉姆斯134年森林大街,梅洛公园222222年

插入使用条款

——假设visiting_students表已经创建并填充。>选择*visiting_students;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -弗勒劳伦特345年,伦敦777777年戈登马丁779年大街,牛津大学888888年>插入覆盖学生visiting_students;>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -弗勒劳伦特345年,伦敦777777年戈登马丁779年大街,牛津大学888888年

插入覆盖一个目录

>创建学生(的名字VARCHAR(64年),地址VARCHAR(64年),student_idINT)分区通过(student_id)位置“/ mnt / user1 /学生”;>插入覆盖δ' /mnt/user1/学生(艾米·史密斯的,公园大街123号,圣何塞,111111年);>选择*学生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公园大街,111111年