当前位置: 首页 > 知识库问答 >
问题:

Java-合并来自不同数据源中2个表的数据

上官迪
2023-03-14

我有一个用例,我必须合并来自2个表(位于不同的数据源中)的数据。考虑到每个表都有员工数据(名字、姓氏、phoneNumber)。对于每个员工,我必须合并来自两个表的phoneNumber数据,其他数据将与表1中的相同

  1. 如果表1和表2中都有员工数据,则电话号码数据将合并为逗号分隔的值,其他数据将来自表1

这些表每个表大约有40行缺少数据。接近5GB。在Java中实现这一点的最佳方法是什么?我担心的是,如果我将这两个表中的数据拉入Java缓存,我仍然必须循环整个表2,以查看是否有员工也在那里。或者python脚本会更好?

表1

表2:

表3(合并电话号码后):

共有1个答案

殳经略
2023-03-14

您可以将其作为SQL查询轻松完成。

基本上,你想要一个完整的连接,但是——唉——MySQL不支持。

因此,一种方法是:

select t1.EmployeeID, t1.FirstName, t1.LastName
       concat_ws(',', t1.PhoneNumber, t2.PhoneNumber) as PhoneNumber
from table1 t1 left join
     table2 t2
     on t1.EmployeeID = t2.EmployeeID
union all
select t2.EmployeeID, t2.FirstName, t2.LastName, t2.PhoneNumber
from table2 t2
     table1 t1 left join
     on t1.EmployeeID = t1.EmployeeID
where t1.EmployeeID is null;

也就是说,获取表1中员工的所有行。然后从表2中添加额外的行。对于第一部分,concat_ws()便于组合电话号码。

 类似资料:
  • null 如何使用Spring Batch配置JTA/XA事务(Atomikos)?

  • 此时此刻,我不太确定如何处理这个问题。我还打算尝试使用外键。如有任何帮助,不胜感激。

  • 来自数据库表的REST资源 我最近学习了一些关于REST的东西(其中许多我部分理解)。我也做了一些简单的演示,这些演示不是很rest,但至少我尝试了一些resting的东西。但是,当涉及到从零开始开发一些真实世界的应用程序时,我就笨手笨脚了。 null 这个问题是我之前关于如何基于一些表以restful方式决定资源的问题的延续 请不要说没有这样规定的标准。应该有一个:。我只是要求一个方法…只是一些

  • 我得合并两个DF。一个是我的主df,另一个有很多NaN 合并应该只是“忽略”NaN值,并且只在列值不是NaN的地方合并。我尝试了不同的方法,但是df2中的数据有几十种可能出现NaN值。df1有168K行,df2大约有170行,应该与任何与所有非NAN值匹配的相关联。有人知道如何有效地做到这一点吗? 经过对不同方法的广泛研究,似乎一个“神奇”的方式忽略NaNs可能是不存在的。我想在df2上应用一个掩

  • 问题内容: 我需要比较2个不同数据库中的数据库表,以了解差异所在,是否有一个简单的工具或脚本来实现? 问题答案: redgate SQL数据比较

  • 我有两个不同列数和行数的CSV文件。第一个CSV文件有M列和N行,第二个文件有H列和G行。一些列具有相同的名称。 null 另外,如果两个CSV文件有两个数据帧,并希望这样做,例如,如果我将第一个CSV加载到中,将第二个加载到中,然后希望合并到,类似于上面的示例。