Comment puis-je récupérer des données de plusieurs bases de données dans une seule requête?

Si j'ai plusieurs bases de données avec les mêmes tables et colonnes, comment puis-je récupérer des données à partir de ces bases de données en utilisant une seule requête en Java. Fait cela pour database unique, je suis débutant en Java, s'il vous plaît suggérer.

public class MultipleDBTest{ public void dbConnect(Ssortingng db_connect_ssortingng, Ssortingng db_userid, Ssortingng db_password){ try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection(db_connect_ssortingng, db_userid, db_password); System.out.println("connected"); Statement statement = conn.createStatement(); Ssortingng querySsortingng = "select <Col1>, <Col2> from <Table>"; ResultSet rs = statement.executeQuery(querySsortingng); while(rs.next()){ System.out.println(rs.getSsortingng(1) + " | " + rs.getSsortingng(2)); } } catch(Exception e){ e.printStackTrace(); } } public static void main(Ssortingng[] args){ ConnectMSSQLServer connServer = new ConnectMSSQLServer(); connServer.dbConnect("jdbc:sqlserver://localhost;databaseName=<Database1>","<Username>","<Password>"); } } 

Le moyen le plus simple d'get des données à partir de servers Ultiple consiste à les lier, à interroger datatables de chaque table en utilisant le nom de table complet, à savoir Server.Database.Schema.Table , et à faire l'union de tous.

Vous pouvez uniquement spécifier le server souhaité dans le nom qualifié complet, Server , si vous liez les autres servers au server sur lequel vous effectuez la requête.

Vous finiriez avec soemthign comme ça

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

S'il vous plaît, consultez cet article pour comprendre ce que sont les servers liés et comment vous les configurez: Serveurs liés (moteur de database)

Laissez Sql Server faire le travail pour vous. Créez une vue dans l'une des bases de données qui reference datatables des tables des autres bases de données. De cette façon, votre code n'a besoin d'accéder qu'à un object dans une database, la vue.

C'est plus facile si les bases de données sont sur le même server. Si les bases de données sont sur des servers distincts, vous devrez les lier.

Si par "bases de données multiples" – vous voulez dire plusieurs schémas dans la même database, alors vous pouvez utiliser le nom du schéma et faire le JOIN. Assurez-vous également que vous disposez des privilèges suffisants pour lire les deux schémas. La requête SQL serait de la forme:

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

Et si vous voulez dire plusieurs bases de données sur différentes instances de database, vous devrez peut-être créer des liens entre les instances de database. Reportez-vous à cet article SO pour plus d'informations: Interrogation des données en joignant deux tables dans deux bases de données sur différents servers

Si l'information vous aide, n'oubliez pas de voter. Merci! 🙂

Database.Schema.Table lors du referencement de tables

et

Database.Schema.Table.Column lors du referencement des colonnes

Vous pouvez écrire des jointures entre des bases de données de cette manière et retirer de manière continue des données de plusieurs bases de données.

 USE [DatabaseA] SELECT * FROM DatabaseA.dbo.DSNA_tblMaiin INNER JOIN DatabaseB.dbo.DSNB_tblMaiin ON DatabaseA.dbo.DSNA_tblMaiin.Serialnumber = DatabaseB.dbo.DSNB_tblMaiin.Serialnumber INNER JOIN DatabaseB.dbo.DSNC_tblMaiin ON DatabaseA.dbo.DSNA_tblMaiin.Serialnumber = DatabaseC.dbo.DSNC_tblMaiin.Serialnumber