文档首页 > > SQL语法参考> 插入数据

插入数据

分享
更新时间: 2019/10/25 GMT+08:00

功能描述

将SELECT查询结果或某条数据插入到表中。

语法格式

1
2
INSERT {OVERWRITE | INTO} TABLE [db_name.]table_name
  [PARTITION partition_specs] select_statement;
1
2
INSERT {OVERWRITE | INTO} [TABLE] [db_name.]table_name
  VALUES (values_row [, values_row ...]);

关键字

表1 INSERT参数

参数

描述

db_name

需要执行INSERT命令的表所在数据库的名称。

table_name

需要执行INSERT命令的表的名称。

partition_specs

指定详细的分区信息。若分区字段为多个字段,可以不包含所有的字段,会匹配上对应的分区。单表分区数最多允许7000个。

select_statement

源表上的SELECT查询(支持DLI表、OBS表)。

values_row

想要插入到表中的值,列与列之间用逗号分隔。(val1 [, val2, ...])

注意事项

  • 表必须已经存在。
  • 被插入的OBS表在建表时只能指定文件夹路径。
  • 源表和目标表的数据类型和列字段个数应该相同,否则插入失败。
  • 不建议对同一张表并发插入数据,因为有一定概率发生并发冲突,导致插入失败。
  • INSERT INTO命令用于将查询的结果追加到目标表中。
  • INSERT OVERWRITE命令用于覆盖源表中已有的数据。
  • INSERT INTO命令可以并行执行,INSERT OVERWRITE命令只有在分区表下不同的插入到不同静态分区才可以并行。
  • INSERT INTO命令和INSERT OVERWRITE命令同时执行,其结果是未知的。
  • 在从源表插入数据到目标表的过程中,无法在源表中导入或更新数据。

示例

  • 将表t2内的数据插入到表t1内。
    1
    INSERT INTO TABLE t1 select * from t2;
    
  • 查询records表的name与score,并将该查询结果插入到分区表student中classNo = 1的分区。
    1
    INSERT INTO TABLE student PARTITION(classNo = 1) SELECT name, score FROM records;
    
  • 将(1, "a"), (2, "b")插入到表t2内
    1
    INSERT INTO TABLE t2 VALUES(1, "a"), (2, "b");
    
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区