繁体   English   中英

如何对不同的数据库系统执行SQL查询?

[英]How can I perform the SQL query against different database systems?

我有一个关于如何对不同数据库系统执行数据库查询的问题?

例如,我有以下SQL查询字符串:

SELECT A.F1, A.F2, B.F3, B.F4 
FROM TableA A, TableB B 
WHERE A.ID=B.ID AND B.ID=xyz

有什么解决方案可以在以下情况下执行上述查询:

  • TableA来自Oracle数据库,TableB也来自另一个实例的Oracle数据库
  • TableA来自SQL Server数据库,TableB来自Oracle数据库
  • TableA来自Oracle数据库,TableB来自SQL Server数据库
  • TableA来自一个SQL Server数据库,TableB也来自另一个SQL Server实例的SQL Server数据库

我知道在情况#1中,我可以使用ORACLE DATABASE LINK功能(也可能是#3)。 但是,有没有一种通用的解决方案可以解决以上所有情况? 例如,也许还有另一种情况,我想从MySQL和SQL Server数据库中联接两个表。

对于我使用C#/。NET进行编码,欢迎任何建议,包括将数据加入代码中。

谢谢!

这称为联合查询

您可以使用SQL Server联合身份验证功能(链接服务器)并在SQL Server中运行查询。 您可以使用Oracle联合身份验证功能(Oracle异构服务)并在Oracle中运行查询。

无论哪种方式,您都需要选择一个数据库服务器,使该服务器知道另一个(外部)数据库,然后在该服务器上执行查询。

请记住,您不能因此而获得良好的性能,因为在大多数情况下,执行服务器会在本地加载所有源记录并在本地加入。

否则,您需要在应用程序中编写自己的“联盟”功能。 这是不平凡的,即数据类型在供应商之间并不完全匹配,因此您需要构建一些智能工具。 另外,如果要连接特别大的表,则最好确保算法已优化,否则将运行内存。 除此之外,现有产品(SQL,Oracle,Cognos等)中的联合查询功能是大型公司进行大量开发的结果。

您能告诉我们您希望加入多少条记录吗?各种源数据库服务器大多是固定的吗?或者这是临时查询工具吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM