ADB for mysql 【INSERT [IGNORE] INTO table_name】迁移 DWS 改写方法

举报
瘸子那条好腿 发表于 2020/12/08 15:28:44 2020/12/08
【摘要】 INSERT INTOINSERT INTO用于向表中插入数据,遇到主键重复时会自动忽略当前写入数据,不做更新,作用等同于INSERT IGNORE INTO。语法 INSERT [IGNORE] INTO table_name [( column_name [, …] )] [VALUES] [(value_list[, …])] [query];参数IGNORE:可选参数,若系统中已...

INSERT INTO

INSERT INTO用于向表中插入数据,遇到主键重复时会自动忽略当前写入数据,不做更新,作用等同于INSERT IGNORE INTO

语法

   
INSERT [IGNORE] INTO table_name [( column_name [,] )] [VALUES] [(value_list[,])] [query];

参数

  • IGNORE:可选参数,若系统中已有相同主键的记录,新记录不会被写入。

  • column_name:可选参数,列名。

  • query:通过定义查询,将一行或多行数据插入表中。

DWS改写方法


CREATE TABLE PRODUCTS
(
PRODUCT_ID INTEGER,
PRODUCT_NAME VARCHAR2(60),
CATEGORY VARCHAR2(60)
);
INSERT INTO PRODUCTS VALUES (1600, 'PLAY GYM', 'TOYS');
INSERT INTO PRODUCTS VALUES (1601, '**ZE', 'TOYS');
INSERT INTO PRODUCTS VALUES (1602, 'HARRY POTTER', 'DVD');

CREATE TABLE NEWPRODUCTS
(
PRODUCT_ID INTEGER,
PRODUCT_NAME VARCHAR2(60),
CATEGORY VARCHAR2(60)
);

INSERT INTO NEWPRODUCTS VALUES (1601, '**ZE', 'TOYS');
INSERT INTO NEWPRODUCTS VALUES (1603, 'HARRY POTTER', 'TOYS');
INSERT INTO NEWPRODUCTS VALUES (1604, 'WAIT INTERFACE', 'BOOKS');

--方法1  MERGE  INTO   
CREATE OR REPLACE PROCEDURE INSERT_DATA
AS
BEGIN
MERGE INTO PRODUCTS P  
USING NEWPRODUCTS NP  
ON (P.PRODUCT_ID = NP.PRODUCT_ID)  
WHEN NOT MATCHED THEN 
  INSERT VALUES (NP.PRODUCT_ID, NP.PRODUCT_NAME, NP.CATEGORY);
END;
/

--调用此存储过程。
CALL INSERT_DATA();

--方法2  NOT EXISTS   
CREATE OR REPLACE PROCEDURE INSERT_DATA
AS
BEGIN
INSERT INTO PRODUCTS   
SELECT * FROM NEWPRODUCTS NP  
WHERE NOT EXISTS (SELECT 1 FROM PRODUCTS MP WHERE NP.PRODUCT_ID = MP.PRODUCT_ID);
END;
/

--调用此存储过程。
CALL INSERT_DATA();

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。