SQL Developer:从连接的SQL Server DB和连接的Oracle DB连接表

时间:2013-07-22 19:44:44

标签: sql sql-server-2005 oracle11g oracle-sqldeveloper

我们正在从SQL Server 2005迁移到Oracle 11G。我一直在尝试使用存储在SQL Server中的表中的数据对Oracle中的表进行更新。

使用SQL Developer,我完成了以下内容:

  1. 创建了与Oracle数据库的连接

    Created Connection name --> e9_crp
    Supplied User name and Pass
    Defined Host Name and SID
    
  2. 我还创建了一个包含引用数据的SQL Server连接

    Connection Name --> sql_data
    User Name and Pass
    Host and Port
    
  3. 用于SQL Server的连接名称为sql_data

    用于Oracle的连接名称为e9_crp

    SQL Server中的表位于数据库my_tmp中,其所有者为dbo,名为tiersmy_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加入这两个表?我已尝试多次迭代表字符串进行连接但没有运气。任何帮助表示赞赏。

1 个答案:

答案 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帖子......

SQL statement joining Oracle and MS SQL Server