1

在一个数据库中,我有PRODUCTS带有列的表NAMETECHNICAL_NAME.

在第二个数据库中,我有一个TEMP_PRODUCTS带有列的表NAME(对应于第一个 db 中表的列),NAME也就是说,应该使用第一个 db 中的相应值进行更新。PRODUCTSTECHNICAL_NAMEnullTECHNICAL_NAME

所以我应该UPDATE table TEMP_PRODUCTS使用JOINwith columns来做NAME

我想避免从 1st bd 导出表并将其导入到 2nd db 的解决方案。

我怎样才能做到这一点?

4

3 回答 3

3

通过创建 DB 链接,我们只能从另一个 DB 访问一个 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)
于 2012-12-26T11:45:05.243 回答
2

假设:

UPDATE temp_products tp
  SET technical_name=
    (SELECT technical_name FROM products@db1 p
      WHERE tp=name=p.name)
于 2012-12-26T10:48:59.097 回答
2

您需要在表所在的位置和同一数据库上的 db 链接中执行以下查询db2,以temp_product进行连接。db1db2db1

   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>';
于 2012-12-26T11:01:57.830 回答