在一个数据库中,我的表PRODUCTS
包含NAME
列和TECHNICAL_NAME
。
在第二个数据库中,我有一个表TEMP_PRODUCTS
,其列NAME
(对应于来自第一个数据库的表NAME
的列PRODUCTS
)和TECHNICAL_NAME
那是null
,应使用第一个数据库中相应的TECHNICAL_NAME
值进行更新。
所以我应该UPDATE table TEMP_PRODUCTS
使用JOIN
列进行NAME
吗?
我想避免使用从第一个bd导出表并将其导入第二个数据库的解决方案。
我该怎么做?
答案 0 :(得分:2)
假设:
NAME
列均为UNIQUE
; db2
中的database link指向db1
。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)