-
shijiao 小试身手Lv3
发表于2018-8-15 15:06
悬赏1
已解决
更新插入是否会做三种情况判断:
1、主键存在,数据完全一样
2、主键存在,数据存在修改
3、主键不存在
数据更新是否只是根据已存在的主键更新数据?
数据附加如果违反唯一性约束怎么办?
数据覆盖是否delete全表再插入?
数据覆盖:先将目标表清空,在将源数据插入目标表中。
数据更新:更新目标表中已有的数据,源数据在目标表中的不存在的话,将不作处理
更新插入:源数据如果在目标表中不存在,则插入该条数据;源数据如果在目标表中存在,则更新该条数据。
您刚才说的三种判断,如果有主键,会识别主键,数据完全一样就直接覆盖,数据存在修改也会直接修改,如果不存在主键,数据完全一样的直接重复保留并集,不过一般界面就会让你勾选主键更新
数据更新是只根据已存在的主键更新
数据附加如果违反唯一性约束会中止
数据覆盖是会truncate再insert
4个回答
数据附加:将源数据追加到目标目的表中,若某条源数据记录在目标中已经存在,则忽略该条源数据。
数据覆盖:先将目标表清空,在将源数据插入目标表中。
数据更新:更新目标表中已有的数据,源数据在目标表中的不存在的话,将不作处理
更新插入:源数据如果在目标表中不存在,则插入该条数据;源数据如果在目标表中存在,则更新该条数据。
您刚才说的三种判断,如果有主键,会识别主键,数据完全一样就直接覆盖,数据存在修改也会直接修改,如果不存在主键,数据完全一样的直接重复保留并集,不过一般界面就会让你勾选主键更新
数据更新是只根据已存在的主键更新
数据附加如果违反唯一性约束会中止
数据覆盖是会truncate再insert
数据更新和更新插入用的是merge into语句,数据附加和数据覆盖直接用的insert语句,数据覆盖会先清掉之前的数据。关于merge into的用法,详细见http://www.cnblogs.com/dongsheng/p/4384754.html,简单来说就是符合条件的情况下执行更新操作,否则执行插入操作,也可以只做更新。