繁体   English   中英

Oracle更新表以及来自另一个数据库的值

[英]Oracle update table with the value from another database

在一个数据库中,我有表PRODUCTS ,其列为NAMETECHNICAL_NAME

在第二个数据库中,我具有表TEMP_PRODUCTS ,该表的NAME列(与第一数据库的表PRODUCTS NAME列相对应)和TECHNICAL_NAMEnull ,应使用第一数据库的相应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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM