连接来自不同服务器的postgres表

时间:2018-08-02 19:50:51

标签: java postgresql

我想通过使用Java将来自不同服务器上托管的两个不同postgres的表联接来提取数据。

ResultSet resA = statement_A.executeQuery("select issue_id from Server_A.table_name");
ResultSet resB = statement_B.executeQuery("select issue_id from Server_B.table_name");

在这种情况下,如何执行联接查询以获取结果集?任何指针将不胜感激..

1 个答案:

答案 0 :(得分:0)

您不能以任何自动/神奇的方式进行操作。您可以做的是定义一个类,该类将具有两个表的属性的并集,例如:

public class JoinedResult{
   private int id;
   private int name;
   // all other common properties to both
   ...
   // properties exclusive to first table
   ...
   // properteis exclusive to second table
   ...
}

并构造这些对象的列表,其中将包含两个表的合并结果。

要进行实际构造,您可以选择以下几种方式:

  • 第一个也是最简单的方法(但效率不高)是使用嵌套循环对两个结果进行迭代,并且一旦id(或使用的任何键)匹配,就应该构造一个JoinedResult
  • 第二个比较复杂,但效率更高:
    • 迭代第一个结果集并构建一个将id映射到对象的映射。
    • 迭代第二个结果集并构建一个将id映射到对象的映射。
    • 在您构建的其中一个地图的键上循环,并使用该键访问两个地图中的匹配值,最后构建连接的对象。