比对两个 csv 文件

有两个同构的大 csv 文件 A 和 B,主键是 Name、Dept,两者有部分数据不同。

A.csvB.csv

Name,Dept,Salary

Jonathan,Administration,7

Alexis,Administration,16000

Timothy,Administration,0

Michael,Administration,0

Alexis_,Administration,0

Ashley,Finance,11000

Name,Dept,Salary

Jonathan,Administration,7

Alexis,Administration,16

Timothy,Finance,5000

Ashley,Finance,11000

Daniel,HR,1600

Joseph_,Finance,1600

请用 Java 比较两个文件的主键,根据主键找到 A 有而 B 没有的记录。

NameDeptSalary
Alexis_Administration0
MichaelAdministration0
TimothyAdministration0

编写SPL代码:

A
1=T@c("A.csv")=T@c("B.csv")
2=A1.sortx(Name,Dept)=B1.sortx(Name,Dept)
3=[A2,B2].merge@d(Name,Dept).fetch()

函数T可解析csv文件,@c表示用游标读取远超内存的文件,sortx用于游标排序,merge用于归并,@d表示求差集。

上面代码也可以用SPL语句一步实现:

=[T@c(""A.csv"").sortx(Name,Dept),T@c(""B.csv"").sortx(Name,Dept)].merge@d(Name,Dept).fetch()

Java 集成 SPL 可参考 Java 如何调用 SPL 脚本

开源SPL源码地址

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值