我有两个数据库服务器一个是mysql另一个是db2都在不同的机器上运行。我想通过使用join从数据库中获取表中的记录。我已经研究了链接服务器概念但问题是我不能找到用db2创建链接服务器的任何例子(我只能找到SSMS,即使用Sql Server Mannagement Studio创建链接服务器)但是我的情况是mysql和db2,我需要创建一个链接服务器给其中一个/反之亦然。
请建议一些帮助我如何实现这一目标。
提前致谢!
答案 0 :(得分:1)
在DB2中,有一个名为 federation 的功能(信息集成的一部分),它允许您向DB2提供外部资源(包装器和昵称);您可以从DB2查询这些外部资源,甚至可以在不同的源(其他DB2数据库,Informix | MSSQL服务器| Oracle | MySQL数据库,平面文件等)之间进行连接。 为了查询外部资源,此功能需要特殊许可证。相反,如果要查询其他DB2或informix数据库,此功能不需要额外的许可证,因为它是免费的(这些是IBM数据库)。
在订购方面,有一个名为表格函数的选项。这些函数在调用时返回一个表,然后,您可以将返回的数据与其他表连接起来。这些函数可以用SQL PL(IBM过程语言),C或Java开发。
使用第二个选项,您可以在Java中创建一个查询MySQL表的表函数,然后将数据返回给DB2。 我写了一个关于如何在Twitter中查询“主题”并将该数据返回给DB2的示例。您必须执行几乎相同的操作,但不是查询Twitter,而是配置其他数据库。 http://angocadb2.blogspot.fr/2012/02/accediendo-tweeter-desde-db2-table.html
答案 1 :(得分:0)
@AngocA它不起作用但是对于你的建议而言。
经过长时间的搜索后,我自己想出了上述自我发布的答案,并考虑将其发布在此处,因为如果我们需要从两个不同的数据库服务器获取数据的任何场景组合,它将对其他人有所帮助其中r远程/本地和链接服务器概念失败。
我们可以使用名为Unity Jdbc的第三方jar,我们可以在java代码中以简单的方式使用它来加载驱动程序,然后像旧的jdbc一样获得连接。
1)加载驱动程序,如thisClass.forName(“unity.jdbc.UnityDriver”); 2)像这样的DriverManager.getConnection获取连接(jdbc:unity://test/xspec/mysqldb2.xml); 3)获取记录(DDL / DML) 4)关闭连接
可以访问Unity Jdbc http://www.unityjdbc.com/
在我们的代码中使用这个jdbc,我们实际上加载了一个基于xml的文件,该文件定义了我们需求的所需数据源。
一旦设置好所有内容,就可以轻松地从两个不同的远程数据库中的两个不同的表中形成查询。语法:dbname.tablename.fieldname
另外,我们不需要处理任何进一步的xml配置来关闭在关闭外部实际连接之后创建的内部连接。
任何问题写回来。