Oracle更新表与另一个数据库的值

时间:2012-12-26 10:36:59

标签: sql oracle oracle10g sql-update

在一个数据库中,我的表PRODUCTS包含NAME列和TECHNICAL_NAME

在第二个数据库中,我有一个表TEMP_PRODUCTS,其列NAME(对应于来自第一个数据库的表NAME的列PRODUCTS)和TECHNICAL_NAME那是null,应使用第一个数据库中相应的TECHNICAL_NAME值进行更新。

所以我应该UPDATE table TEMP_PRODUCTS使用JOIN列进行NAME吗?

我想避免使用从第一个bd导出表并将其导入第二个数据库的解决方案。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

假设:

UPDATE temp_products tp
  SET technical_name=
    (SELECT technical_name FROM products@db1 p
      WHERE tp=name=p.name)

答案 1 :(得分:2)

您需要在db2执行以下查询,其中temp_product表所在,以及同一数据库db1上的db link db2,以连接{{1} }。

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;

答案 2 :(得分:2)

通过仅创建数据库链接,我们可以从另一个数据库访问一个数据库对象。

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)