Java 如何从两个数据库中选择唯一的数据
我有两个数据库;数据库A和数据库B。数据库A位于我的计算机中,数据库B位于在线服务器中。这两个数据库包含具有相同数据类型的相同表,但数据库A将包含比数据库B更多的数据。我想从数据库A中选择所有唯一的数据 数据库A表A 数据库B表A 我想选择:Java 如何从两个数据库中选择唯一的数据,java,database,Java,Database,我有两个数据库;数据库A和数据库B。数据库A位于我的计算机中,数据库B位于在线服务器中。这两个数据库包含具有相同数据类型的相同表,但数据库A将包含比数据库B更多的数据。我想从数据库A中选择所有唯一的数据 数据库A表A 数据库B表A 我想选择: 2 | Alice | B 3 | Bob | C 我如何才能做到这一点?选项1 好的,这样做很无聊(也很难)的方法是向不同的数据库发出不同的SQL查询,然后编写一堆java来比较结果。这完全可以做到,但哎哟 如果您需要
2 | Alice | B
3 | Bob | C
我如何才能做到这一点?选项1 好的,这样做很无聊(也很难)的方法是向不同的数据库发出不同的SQL查询,然后编写一堆java来比较结果。这完全可以做到,但哎哟 如果您需要定期执行此类操作,那么应该使用联邦数据库或虚拟数据库工具。基本上,这些工具所做的就是创建一个虚拟的“uber数据库”,其中包含您需要在其中查询的两个数据库。因此,您可以连接到虚拟数据库并发出与这两个数据库都不一致的SQL查询 一个简单的例子是。如果你四处搜索,也会有其他人,比如 然后,您只需要针对这两个数据库编写一个SQL查询,它将为您提供所需的内容,即 在UnityJDBC中,可能是这样的:
SELECT ID, FName, Lname
FROM Database_A.TableA, Database_B.TableB
LEFT JOIN Database_B.TableB ON Database_A.TableA.ID = Database_B.TableB.ID;
这个查询并没有那么复杂,但它只有在使用虚拟数据库层的情况下才有可能实现
选项2
使用提取、转换和加载工具(如)将数据从一个提取到另一个。您可以使用GUI应用程序来执行此操作,也可以使用他们的开源java库并将其构建到您的应用程序中。如果您只需要执行一次,并且数据不会太大
- 将两个表导出到CSV的
- 把它们放在同一个盒子里
- 使用grep查找A中不在B中的列 grep-vf DB_B_Table_A.csv DB_A_Table_A.csv
2 | Alice | B
3 | Bob | C
SELECT ID, FName, Lname
FROM Database_A.TableA, Database_B.TableB
LEFT JOIN Database_B.TableB ON Database_A.TableA.ID = Database_B.TableB.ID;