如何在单个查询中从多个数据库中检索数据?

Rik*_*ik 5 java database sql-server jdbc connectivity

如果我有多个具有相同表和列的数据库,我如何使用 Java 中的单个查询从这些数据库中检索数据。为单个数据库完成此操作,我是 Java 新手,请提出建议。

public class MultipleDBTest{
   public void dbConnect(String db_connect_string, String db_userid, String db_password){
     try{
       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
       System.out.println("connected");
       Statement statement = conn.createStatement();
       String queryString = "select <Col1>, <Col2> from <Table>";
       ResultSet rs = statement.executeQuery(queryString);
        while(rs.next()){
          System.out.println(rs.getString(1) + " | " + rs.getString(2));
        }
      }
      catch(Exception e){
        e.printStackTrace();
      }
  }

  public static void main(String[] args){
    ConnectMSSQLServer connServer = new ConnectMSSQLServer();
    connServer.dbConnect("jdbc:sqlserver://localhost;databaseName=<Database1>","<Username>","<Password>");
  }
}
Run Code Online (Sandbox Code Playgroud)

Jot*_*aBe 3

从多个服务器获取数据的最简单方法是将它们链接起来,使用完全限定的表名(即 )查询每个表中的数据,Server.Database.Schema.Table然后将所有服务器进行并集。

Server如果您将其他服务器链接到您要进行查询的服务器,则只能以完全限定名称 指定所需的服务器。

你最终会得到这样的结果

select * from Server1.Database1.dbo.Table
  union
select * from Server2.Database2.dbo.Table
  union
select * from Server3.Database2.dbo.Table
Run Code Online (Sandbox Code Playgroud)

请参阅本文以了解什么是链接服务器以及如何设置它们:链接服务器(数据库引擎)