我们正在从SQL Server 2005迁移到Oracle 11G。我一直在尝试使用存储在SQL Server中的表中的数据对Oracle中的表进行更新。
使用SQL Developer,我完成了以下内容:
创建了与Oracle数据库的连接
Created Connection name --> e9_crp
Supplied User name and Pass
Defined Host Name and SID
我还创建了一个包含引用数据的SQL Server连接
Connection Name --> sql_data
User Name and Pass
Host and Port
用于SQL Server的连接名称为sql_data
用于Oracle的连接名称为e9_crp
SQL Server中的表位于数据库my_tmp
中,其所有者为dbo,名为tiers
(my_tmp.dbo.tiers
)。
在SQL Developer中,我可以查看,选择和查看层表。在sql_data
连接中,此SQL语句也可以使用工作表:
select * from [my_tmp].[dbo].[tiers]
在e9_crp
连接架构中尝试连接到此表时,我一直在尝试执行以下操作:
select * from [sql_data].[my_tmp].[dbo].[tiers]
但是这会返回一个错误,指出tiers表不存在:
ORA-00903: invalid table name
00903. 00000 - "invalid table name"
两个表都有一个唯一的ID“ID”,所以在一个完美的世界中,这应该有效:
select a.itm, b.tier
from [e9_crp].[crpdta].[itemmaster] a inner join [sql_data].[my_tmp].[dbo].[tiers] b
on(a.itm = b.itm)
这假设我在表标识符中使用连接名称。但是,这显然不起作用。我需要做的是能够以必要的类似方式将这两个数据库连接在一起。
如何使用SQL Developer加入这两个表?我已尝试多次迭代表字符串进行连接但没有运气。任何帮助表示赞赏。
答案 0 :(得分:1)
Oracle具有DBLink的概念,而SQL Server具有链接服务器的概念。这两个功能都允许您从两个单独的数据库中查询数据。
这是一个链接,其中包含有关设置Oracle DBLink到SQL Server DB的说明...
http://www.dba-oracle.com/t_database_link_sql_server_oracle.htm
这是一个链接,其中包含有关将SQL Server链接服务器设置为Oracle DB的说明...
http://support.microsoft.com/kb/280106
另见这篇SO帖子......