如何用关键字段关联两个 csv 文件
现有两个csv文件,分别是:
data1.csv:
id | date | amount |
1 | 2019/9/8 | 3000 |
1 | 2019/10/8 | 1500 |
2 | 2019/11/20 | 1560 |
2 | 2008/5/20 | 2060 |
data2.csv:
id | name | age | location |
1 | smith | 32 | NY |
2 | jack | 24 | LA |
需要利用id列,将这两个csv的数据关联起来:
id | date | amount | name | age | location |
1 | 2020/9/1 | 3000 | smith | 32 | NY |
1 | 2020/2/3 | 1500 | smith | 32 | NY |
2 | 2020/8/8 | 1560 | jack | 25 | LA |
2 | 2020/12/17 | 2060 | jack | 25 | LA |
借助集算器可以很方便地完成这件事。可去润乾网站下载集算器职场版,运行时需要一个授权,免费版本就够用。
1. 在集算器中编写脚本joincsv.dfx:
A | B | |
1 | =file("data1.csv").import@ct() | /读取csv文件内容 |
2 | =file("data2.csv").import@ct().keys(id) | /读取csv文件内容,并将id设为主键 |
3 | =A1.join(id,A2,name,age,location) | /用A1的外键id与A2关联 |
4 | =file("data3.csv").export@ct(A3) | /导出关联后的结果到data3.csv |
2. 执行脚本,得到关联后的csv文件:data3.csv。
通常情况下,data1.csv这样的文件可能很大,而data2.csv这样的代码数据通常较小可以装入内存,这时我们只需要将A1改为:=file("data1.csv").cursor@ct(),利用游标来解决文件太大,无法装入内存的问题。