openGauss学习笔记-170 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用合并方式更新和插入数据

文章目录

    • openGauss学习笔记-170 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用合并方式更新和插入数据
      • 170.1 前提条件
      • 170.2 操作步骤

openGauss学习笔记-170 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用合并方式更新和插入数据

在用户需要将一个表中所有的数据或大量的数据添加至现有表的场景下,openGauss提供了MERGE INTO语句通过两个表合并的方式高效地将新数据添加到现有表。

MERGE INTO语句将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,关联条件不匹配时对目标表执行INSERT。此方法可以很方便地用来将两个表合并执行UPDATE和INSERT,避免多次执行。

170.1 前提条件

进行MERGE INTO操作的用户需要同时拥有目标表的UPDATE和INSERT权限,以及源表的SELECT权限。

170.2 操作步骤

  1. 创建源表products,并插入数据。

    openGauss=# CREATE TABLE products 
    ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) 
    );openGauss=# INSERT INTO products VALUES 
    (1502, 'olympus camera', 'electrncs'),
    (1601, 'lamaze', 'toys'),
    (1666, 'harry potter', 'toys'),
    (1700, 'wait interface', 'books'); 
    
  2. 创建目标表newproducts,并插入数据。

    openGauss=# CREATE TABLE newproducts 
    ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) 
    ); openGauss=# INSERT INTO newproducts VALUES 
    (1501, 'vivitar 35mm', 'electrncs'),
    (1502, 'olympus ', 'electrncs'),
    (1600, 'play gym', 'toys'),
    (1601, 'lamaze', 'toys'), 
    (1666, 'harry potter', 'dvd'); 
    
  3. 使用MERGE INTO 语句将源表products的数据合并至目标表newproducts。

    MERGE INTO newproducts np    
    USING products p    
    ON (np.product_id = p.product_id )    
    WHEN MATCHED THEN     UPDATE SET np.product_name = p.product_name, np.category = p.category 
    WHEN NOT MATCHED THEN     INSERT VALUES (p.product_id, p.product_name, p.category) ; 
    

    上述语句中使用的参数说明,请见表1。更多信息,请参见MERGE INTO

    表 1 MERGE INTO语句参数说明

    参数说明举例
    INTO 子句指定需要更新或插入数据的目标表。目标表支持指定别名。**取值:newproducts np说明:**名为newproducts,别名为np的目标表。
    USING子句指定源表。源表支持指定别名。**取值:products p说明:**名为products,别名为p的源表。
    ON子句指定目标表和源表的关联条件。关联条件中的字段不支持更新。**取值:np.product_id = p.product_id说明:**指定的关联条件为,目标表newproducts的product_id字段和源表products的product_id字段相等。
    WHEN MATCHED子句当源表和目标表中数据针对关联条件可以匹配上时,选择WHEN MATCHED子句进行UPDATE操作。仅支持指定一个WHEN MATCHED子句。WHEN MATCHED子句可缺省,缺省时,对于满足ON子句条件的行,不进行任何操作。若目标表中存在分布列,则该列不支持更新。**取值:WHEN MATCHED THEN UPDATE SET np.product_name = p.product_name, np.category = p.category说明:**当满足ON子句条件时,将目标表newproducts的product_name、category字段的值替换为源表products相对应字段的值。
    WHEN NOT MATCHED子句当源表和目标表中数据针对关联条件无法匹配时,选择WHEN NOT MATCHED子句进行INSERT操作。仅支持指定一个WHEN NOT MATCHED子句。WHEN NOT MATCHED子句可缺省。不支持INSERT子句中包含多个VALUES。WHEN MATCHED和WHEN NOT MATCHED子句顺序可以交换,可以缺省其中一个,但不能同时缺省。**取值:**WHEN NOT MATCHED THENINSERT VALUES (p.product_id, p.product_name, p.category)**说明:**将源表products中,不满足ON子句条件的行插入目标表newproducts。
  4. 查询合并后的目标表newproducts。

    SELECT * FROM newproducts;
    

    返回信息如下:

     product_id |  product_name  | category
    ------------+----------------+-----------1501 | vivitar 35mm   | electrncs1502 | olympus camera | electrncs1666 | harry potter   | toys1600 | play gym       | toys1601 | lamaze         | toys1700 | wait interface | books
    (6 rows)
    

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C和指针之动态内存分配之编程练习4

1、问题 4.编写一个程序&#xff0c;按照下图中的样子创建数据结构&#xff0c;最后三个对象都是动态分配的结构。第一个对象则可能是一个静态的指向结构的指针。你不必使这个程序过于全面--我们将在下一章讨论这个结构。 2、代码实现 #include <stdio.h> #include <s…

.NET 6 攻略大全(四)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;15分钟)接上篇内容&#xff0c;本篇文章将介绍&#xff1a;DependentHandle 现已公开、RyuJIT、即用型代码/Crossgen 2、.NET 诊断&#xff1a;EventPipe、SDK 的相关攻略。 DependentHandle 现已公开该 DependentHan…

[原创]同一个Tomcat,配置多个context、多个Host

需求前提&#xff1a; 系统结束后&#xff0c;需要部署到服务器上。 目前只可以映射到一个固定IP的非80端口。 而server端和web端都要暴露到外网。 所以配置两个context&#xff0c;使得client应用不需要添加服务名&#xff0c;直接使用IP即可访问&#xff1b;server可以通过ht…

[No000022]他们说:得诺贝尔奖到底有多难?

转载于:https://www.cnblogs.com/Chary/p/No000022.html

java操作redis简单学习3

2019独角兽企业重金招聘Python工程师标准>>> package com.hanchao.testredis;import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Set;import redis.clients.jedis.Jedis;import com.alibaba.fastjson.JSON; import com.al…

Xamarin效果第三篇之手机底部弹窗

前面一篇文章把基本的大框架搞定了,这不再逐个去实现里面的细节;今天主要是分享点击了CollectionView内的点点点然后从手机底部弹出一个可以交互的窗口;直接看看最终实现的效果:作为初来乍到的小萌新只能求助万能的群友让大佬们给指条光明通畅的大道,不然容易跑偏;最终给的方向…

自定义sql_一个简单易用的开源BI软件,专为SQL用户设计的开源库

poli一个易于使用的SQL报告应用程序&#xff0c;专为SQL爱好者而设计。SQL中的电源数据分析&#xff0c;可获得更快的业务洞察力。特性⚡️ 自托管和轻松设置平台独立的Web应用程序 单个JAR文件单个SQLite DB文件。在5分钟内启动并运行。连接任何支持JDBC驱动程序的数据库Postg…

Android之ndk编译出现这个错误error: unused variable ‘a‘ [-Werror=unused-variable]

1、问题 在jni里面就加了一行代码 编译的时候出现这个错误 error: unused variable a [-Werrorunused-variable] 2、解决办法 找到相应的Makefile文件 LOCAL_CFLAGS -Wall -Werror 去掉上面的 -Werror&#xff0c;改成如下 LOCAL_CFLAGS -Wall 就可以了

ELK 中的elasticsearch 集群的部署

本文内容 背景ES集群中第一个master节点ES slave节点本文总结 Elasticsearch&#xff08;以下简称ES&#xff09;搭建集群的经验。以 Elasticsearch-rtf-2.2.1 版本为例。 我搭过三个集群&#xff1a;研究ELK时搭了一个&#xff1b;测试环境搭了一个&#xff1b;生产环境搭了一…

Group Box组合框的简单使用 [大三TJB_708]

http://blog.csdn.net/misskissc/article/details/9317783 Group Box组合框的简单使用 [大三TJB_708] 转载于:https://www.cnblogs.com/chuangyiyuan/p/4885637.html

.NetCore中EF Core为迁移的数据库表统一添加前缀

在项目开发的过程中我们往往需要将项目数据库中的表添加一个统一的前缀。我们为什么要添加表前缀呢&#xff1f;有的可能是公司规定&#xff0c;更多的原因是项目和业务的区分。每个项目针对不同的需求或业务场景&#xff0c;追加相应的标识。当项目到达一定规模后&#xff0c;…

Java对象生命周期

目录 1. 创建阶段(Created)2. 应用阶段(In Use)3. 不可见阶段(Invisible)4. 不可达阶段(Unreachable)5. 收集阶段(Collected)6. 终结阶段7. 对象空间的重新分配1. 创建阶段(Created) 为对象分配存储空间开始构造对象从父类到子类对static成员进行初始化父类成员变量按照顺序初始…

C和指针之动态内存分配常见问题和总结

1、动态内存分配常见问题 1) 结构体成员指针未初始化 2)为指针分配内存太小 3)内存分配成功,但是没初始化 4)内存越界,内存泄漏,free多次或者释放之后没有设置为NULL 2、测试代码 #include <stdio.h> #include <stdlib.h> #inclu…

echarty轴自定义显示不全_表格打印不全怎么办?这招超简单!

私信回复关键词【福利】~获取丰富办公资源&#xff0c;助你高效办公早下班&#xff01;大家好&#xff0c;我是小E~最近&#xff0c;秋叶 Excel 学习班花生 同学&#xff0c;从同事那里收到了一份开会要用的表格&#xff0c;需要马上就要打印出来。会议主题是&#xff0c;从五个…

Xcode命令行生成Bitcode静态库

近两三年一直在做静态库开发 1、在Xcode工程中创建静态库的Target&#xff0c;最初是手动Build出真机的.a文件&#xff0c;模拟器的.a文件&#xff0c;然后再用命令行合并 2、后来一些特殊的开发者&#xff0c;要求加入特殊的功能&#xff0c;或者开放特殊的接口和属性&#xf…

app接口开发(php)

1.JSON方式封装通信接口&#xff1a; 封装&#xff1a; response.php <?php // JSON方式封装通信接口 // 定义 response类 class Response {// 定义一个静态方法,作用&#xff1a;按json方式产生数据 // 规范通信数据&#xff1a;参数一:状态码,参数二:消息提示(初始值为空…

如何优雅地处理 EF Core 异常

前言当我们在使用 EF Core 保存数据时&#xff0c;可能会出现问题&#xff0c;比如插入重复的值&#xff0c;这时我们会收到DbUpdateException&#xff1a;如果把内部异常信息直接返回给客户&#xff0c;这样不太友好&#xff0c;同时也会暴露数据库细节。如何更优雅地处理这些…

利用 VMware vRealize - 构建和优化云管理

2019独角兽企业重金招聘Python工程师标准>>> 利用 VMware vRealize - 构建和优化云管理 VMware vCloud Suite 5.8是新一代基于软件定义数据中心架构构建与管理vSphere私有云的一体化产品&#xff0c;可支持各企业提升效率、控制性与灵活性&#xff0c;实现关键性的I…

linux c之在终端如何依赖.o文件(静态链接库)运行C文件的命令

1、问题 比如在linux的终端&#xff0c;我们运行有个aa.c文件&#xff0c;但是这个这C文件又依赖.o文件&#xff0c;之前我不知道怎么运行&#xff0c;今天才知道,直接放后面就行了 2、命令如下 gcc -g aa.c ***.o -o aa 如果有线程记得加上phread gcc -g aa.c ***.o -o…

合流超几何函数_【初中数学大招流】从平面几何到解析几何

写在前面&#xff1a;本文适合初三学生&#xff1b;本文所讲的方法&#xff0c;可供平时的学习开拓思维&#xff0c;考试时也许可以帮你得分&#xff0c;但请慎用&#xff01;创作不易&#xff0c;喜欢的话不要只收藏呀&#xff0c;双击屏幕有惊喜哦~2019.6.2 更新了一道例题&a…