5 Stimmen

Wie kann ich Daten aus mehreren Datenbanken in einer einzigen Abfrage abrufen?

Wenn ich mehrere Datenbanken mit denselben Tabellen und Spalten habe, wie kann ich Daten aus diesen Datenbanken mit einer einzelnen Abfrage in Java abrufen? Ich habe dies für eine einzelne Datenbank gemacht, ich bin ein Anfänger in Java, bitte um Vorschläge.

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("verbunden");
       Statement statement = conn.createStatement();
       String queryString = "select ,  from ";
       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){
    MultipleDBTest connServer = new MultipleDBTest();
    connServer.dbConnect("jdbc:sqlserver://localhost;databaseName=","","");
  }
}

3voto

JotaBe Punkte 36281

Der einfachste Weg, Daten von mehreren Servern abzurufen, besteht darin, sie zu verknüpfen, die Daten aus jeder Tabelle unter Verwendung des vollqualifizierten Tabellennamens abzufragen, d.h. Server.Database.Schema.Tabelle, und die Vereinigung aller zu erstellen.

Sie können nur den gewünschten Server im vollqualifizierten Namen angeben, Server, wenn Sie die anderen Server mit dem Server verknüpfen, von dem aus Sie die Abfrage ausführen.

Das Ergebnis wäre etwas in der Art:

select * from Server1.Database1.dbo.Tabelle
  union
select * from Server2.Database2.dbo.Tabelle
  union
select * from Server3.Database2.dbo.Tabelle

Bitte lesen Sie diesen Artikel, um zu verstehen, was verknüpfte Server sind und wie Sie sie einrichten: Verknüpfte Server (Datenbank-Engine).

0voto

Lassen Sie Sql Server die Arbeit für Sie erledigen. Erstellen Sie eine Ansicht in einer der Datenbanken, die auf die Daten aus den Tabellen in den anderen Datenbanken verweist. Auf diese Weise muss Ihr Code nur auf ein Objekt in einer Datenbank, der Ansicht, zugreifen.

Dies ist am einfachsten, wenn die Datenbanken auf demselben Server sind. Wenn die Datenbanken auf separaten Servern sind, müssen Sie sie verknüpfen.

0voto

Pat Punkte 2261

Wenn mit "mehreren Datenbanken" - mehrere Schemas in derselben Datenbank gemeint sind, können Sie den Schemanamen verwenden und das JOIN erstellen. Stellen Sie außerdem sicher, dass Sie ausreichende Berechtigungen haben, um beide Schemas zu lesen. Die SQL-Abfrage würde wie folgt aussehen:

select S1T1.Col1, S1T1.Col2, S2T1.Col1, S2T1.Col2 
from Schema1.T1 S1T1, Schema2.T1 S2T1
where S1T1.Col1=S2T1.Col1

Und wenn Sie mit "mehreren Datenbanken" - verschiedene Datenbankinstanzen meinen, müssen Sie möglicherweise Links zwischen den Datenbankinstanzen erstellen. Lesen Sie dazu diesen Beitrag auf SO für weitere Informationen: Datenabfrage durch Verknüpfen von zwei Tabellen in zwei Datenbanken auf unterschiedlichen Servern

Wenn die Informationen hilfreich sind, vergessen Sie nicht zu stimmen. Danke! :)

0voto

Mishra Shreyanshu Punkte 644

Datenbank.Schema.Tabelle beim Referenzieren von Tabellen

und

Datenbank.Schema.Tabelle.Spalte beim Referenzieren von Spalten

Sie können auf diese Weise Joins zwischen Datenbanken schreiben und definitiv Daten aus mehr als einer Datenbank abrufen.

USE [DatenbankA]

SELECT * FROM DatenbankA.dbo.DSNA_tblMaiin

INNER JOIN DatenbankB.dbo.DSNB_tblMaiin ON DatenbankA.dbo.DSNA_tblMaiin.Seriennummer = DatenbankB.dbo.DSNB_tblMaiin.Seriennummer

INNER JOIN DatenbankB.dbo.DSNC_tblMaiin ON DatenbankA.dbo.DSNA_tblMaiin.Seriennummer = DatenbankC.dbo.DSNC_tblMaiin.Seriennummer

-1voto

Animesh Goyal Punkte 9

Was Sie suchen, ist die Bundesebene. Die Ebene wird den SQL-Code analysieren, Abfragen pro Datenbank werden erstellt. Diese unabhängigen Abfragen werden auf der Datenbank ausgeführt und das Ergebnis wird basierend auf der Where-Klausel verbunden. Im Internet gibt es einige auf Antlr basierende SQL-Grammatiken, die Sie für das Parsen des SQL-Codes und die Generierung von DB-spezifischen SQLs verwenden können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X