SQL几种插入语句的区别
一. insert into
insert into以追加的方式向 hive 表尾部追加数据行, 如果主键重复, 则ERROR。语法格式如下:
insert into 库名.表名 values (值 1, 值2, 值3)
insert into 库名.表名(列名1, 列名2, 列名3) values (值 1, 值2, 值3)
二. insert overwrite
insert overwrite 则是先删除 hive 表的数据,再执行写入操作,其实是整个直接重写数据。语法格式如下:
INSERT OVERWRITE TABLE 库名.表名 VALUES(值1, 值2, 值3)
INSERT OVERWRITE TABLE 库名.表名 PARTITION (分区列) SELECT FROM
三. insert ignore into
insert ignore into 会根据主键判断插入数据是否重复,如果重复,将忽略这新插入的数据, 不会返回错误, 但会返回警告
INSERT IGNORE INTO 库名.表名 VALUES(值1, 值2, 值3 )
四.insert into values on duplicate key update 处理方式
当primary/unique 重复时,则执行update语句。如果update后面为恒true, 则与insert ignore into的作用相同。update后面一般跟着的是当遇到主键重复时的更新规则。
INSERT INTO 库名.表名 VALUES(值1, 值2, 值3) ON DUPLICATE KEY UPDATE ID =ID
例如:
INSERT INTO testtable VALUES(1, "hanhan") ON DUPLICATE KEY UPDATE name = "wangzijian"
五.replace into
当数据库中存在主键相同的记录时,则对此条数据做更新(还是先删除掉在插入新纪录,要确认一下)
REPLACE INTO TABLE 库名.表名 VALUES(值1, 值2, 值3)