CSV - 如何匹配类似数据并将文件与批处理合并?

时间:2018-04-26 18:15:25

标签: csv batch-file

我有两个CSV文件需要合并才能正确读取。我遇到的一个问题是在合并之前/之后将协调数据匹配在一起。

我需要能够匹配数据,以便对图表进行排序。这很难解释,但我已经提供了一个例子来帮助解释我的目标。

在CSV文件中,我有几列我正在尝试合并,例如第一个CSV文件看起来如下所示。

"ID","Ver","P/N"
"2000-00","3","abc"
"2001-00","1","acd"
"2001-01","5","acd"
"3111-00","2","xyz"

我的第二个CSV文件如下所示:

"Number","Name"
"1000-00_efg_Ver-1","efg"
"2000-00_abc_Ver-3","abc"
"2001-00_acd_Ver-1","acd"
"3111-00_xyz_Ver-2","xyz"
"4290-01_lmn_Ver-2","lmn"

我希望能够运行脚本将CSV文件合并到一个类似于此的CSV文件中:

ID,Ver,P/N,Number,Name
2000-00,3,abc,2000-00_abc_Ver-3 /abc,abc
2001-00,1,acd,2001-00_acd_Ver-1 /acd,acd
3111-00,2,xyz,3111-00_xyz_Ver-2 /xyz,xyz

因此脚本(不必是批处理但是首选)只会合并匹配的列,并且会丢弃所有其他数据。

非常感谢任何有关如何解决此问题的帮助。

-

编辑:

在浏览网页之后,将数据导入数据库,运行查询然后将查询导出为CSV文件是否有意义?

这应该可行,但如果我这样做,我需要能够每天在特定时间远程运行命令。

-

1 个答案:

答案 0 :(得分:0)

通常我希望看到您的一些编码工作,因为SO不是代码编写服务 使用名为first.csv,second.csv和third.csv

的文件

此批次应该:

:: Q:\Test\2018\04\26\SO50049573.cmd
@Echo off
( Echo:ID,Ver,P/N,Number,Name
  for /f "skip=1 tokens=1-3 delims=," %%A in (first.csv) do (
      findstr "^\"%%~A_%%~C_Ver-%%~B\""  second.csv >nul 2>&1 && (
          Echo:%%~A,%%~B,%%~C,%%~A_%%~C_Ver-%%~B /%%~C,%%~C
      )
  )
) >third.csv 

示例输出

> type third.csv
ID,Ver,P/N,Number,Name
2000-00,3,abc,2000-00_abc_Ver-3 /abc,abc
2001-00,1,acd,2001-00_acd_Ver-1 /acd,acd
3111-00,2,xyz,3111-00_xyz_Ver-2 /xyz,xyz
  • 由于所呈现的内容完全是冗余的,因此无需从second.csv
  • 读取cols
  • findstr只检查构造的名称是否存在
  • 如果找到,则根据请求构建输出字符串。