【问题标题】:SQL Developer: Joining tables from connected SQL Server DB and connected Oracle DBSQL Developer:从连接的 SQL Server DB 和连接的 Oracle DB 连接表
【发布时间】:2013-07-21 16:33:26
【问题描述】:

我们正在从 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
    

用于 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]

但这会返回一个错误,指出该层表不存在:

 ORA-00903: invalid table name
 00903. 00000 -  "invalid table name"

两个表都有一个唯一的 ID 'item',所以在一个完美的世界里这应该可以工作:

 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 连接这 2 个表?我已经为连接尝试了多次迭代表字符串,但没有运气。任何帮助表示赞赏。

【问题讨论】:

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


    【解决方案1】:

    Oracle 有 DBLink 的概念,SQL Server 有 Linked Server 的概念。这两个功能都可以让您从两个独立的数据库中查询数据。

    这是一个链接,其中包含设置 Oracle DBLink 到 SQL Server 数据库的说明...

    http://www.dba-oracle.com/t_database_link_sql_server_oracle.htm

    这是一个链接,其中包含将 SQL Server 链接服务器设置到 Oracle 数据库的说明...

    http://support.microsoft.com/kb/280106

    另请参阅此 SO 帖子...

    SQL statement joining Oracle and MS SQL Server

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2012-09-17
      • 2015-03-19
      • 2012-11-17
      • 2010-12-22
      • 1970-01-01
      相关资源
      最近更新 更多