[英]Oracle update table with the value from another database
在一个数据库中,我有表PRODUCTS
,其列为NAME
和TECHNICAL_NAME
。
在第二个数据库中,我具有表TEMP_PRODUCTS
,该表的NAME
列(与第一数据库的表PRODUCTS
NAME
列相对应)和TECHNICAL_NAME
为null
,应使用第一数据库的相应TECHNICAL_NAME
值进行更新。
所以我应该通过对列NAME
使用JOIN
来执行UPDATE table TEMP_PRODUCTS
?
我想避免从第一个bd导出表并将其导入到第二个db的解决方案。
我怎样才能做到这一点?
通过仅创建数据库链接,我们可以从另一个数据库访问一个数据库对象。
CREATE DATABASE LINK db1_link
CONNECT TO <User Name> IDENTIFIED BY <pwd>
USING 'db2';
-db2表示exp产品db的服务名称
然后更新语句
UPDATE temp_products tp
SET technical_name=
(SELECT technical_name FROM products@db1_link p
WHERE tp.name = p.name)
假设:
NAME
列都是UNIQUE
; db2
有一个指向db1
的数据库链接 。 UPDATE temp_products tp
SET technical_name=
(SELECT technical_name FROM products@db1 p
WHERE tp=name=p.name)
您需要在db2
执行以下查询,该temp_product
位于temp_product
表所在的位置,并且db链接db1
在同一数据库db2
,以连接db1
。
MERGE temp_products tp
USING products@db1 pp
ON(tp.name = pp.name)
WHEN MATCHED THEN
UPDATE SET tp.technical_name = pp.technical_name;
您需要在数据库db2中创建一个db链接,以便可以连接到db1来访问产品表。 请找到创建数据库链接的语法
CREATE [PUBLIC] DATABASE LINK <link_name>
CONNECT TO <user_name>
IDENTIFIED BY <password>
USING '<service_name>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.