为了账号安全,请及时绑定邮箱和手机立即绑定

如果我在 Java 中查询,如何合并来自 mssql 数据库和 mysql 数据库的数据?

如果我在 Java 中查询,如何合并来自 mssql 数据库和 mysql 数据库的数据?

波斯汪 2023-03-09 16:56:36
我正在尝试对存储在两个独立数据库中的数据进行一些分析,其中一个是 mysql 服务器,另一个是 mssql。它们需要基于其中一列进行连接,以便我最终得到一个数据结构。我试图将数据分别存储到 python 中的 pandas 数据帧中,将它们加入到 pandas 中,然后写入 csv 并将其加载回 java。但这做起来非常麻烦,而且可扩展性不强。本质上,我有两个这样的查询:MySQLString myDriver = "org.gjt.mm.mysql.Driver";String myUrl = "jdbc:mysql://localhost/test";Class.forName(myDriver);Connection conn = DriverManager.getConnection(myUrl, "root", "");String query = "SELECT * FROM users";Statement st = conn.createStatement();ResultSet rs = st.executeQuery(query);微软数据库String url = "jdbc:msql://someMSsqlserver/";Connection conn = DriverManager.getConnection(url,"","");Statement stmt = conn.createStatement();ResultSet rs;rs = stmt.executeQuery("SELECT * FROM people");我想让它们连接成一个数据结构。无论如何,这可以在 Java 中本地完成吗?
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您可以尝试的各种策略:

  1. 使用您的 Java 程序在服务器 A 上创建一个临时表,然后从服务器 B 复制您需要的数据(在服务器 B 上使用 SELECT,在服务器 A 上使用 INSERT)。然后在服务器 A 上执行适当的查询,以将该服务器上已有的表与临时表连接起来。您可能有权在任一服务器上创建临时表。

  2. 如果您有权创建永久表,请在服务器 A 上使用永久表。然后,每当用一个 Java 程序更改数据时,将数据从服务器 B 复制到服务器 A,并用另一个 Java 程序查询它。

  3. 将两个表中较小表中的数据插入 Java 程序中的 HashMap,其中 HashMap 的键是连接变量。然后逐行处理较大表中的结果集,在 HashMap 中查找连接的条目。

  4. 切换到 MariaDB 并使用 CONNECT 存储引擎使您的 SQL Server 表可用于 MySQL 查询。

你如何选择策略?这取决于很多事情。你能从你的DBA krewe那里得到多少合作?你的桌子有多大?你总是处理所有的行,或者有时是一个子集?(您的示例查询没有WHERE子句,所以您可能正在处理所有内容。)您能否在 JVM 实例中获得足够的 RAM 来容纳整个表?您需要每小时执行多次还是每周执行一次?每次可以花多少时间?

专业提示:对于像您的示例这样的查询,首先(在两种服务器上)给出 SQL 命令,SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;这样您就不会在检索结果集时阻止其他程序访问您的表。


查看完整回答
反对 回复 2023-03-09
?
ITMISS

TA贡献1871条经验 获得超8个赞

您应该将结果映射到 POJO Arraylist,然后合并它们。

你也可以将它们放在第三个数据库中,然后你就可以进行任何sql查询。


查看完整回答
反对 回复 2023-03-09
  • 2 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信