2014-02-20 89 views
0

此相同的文件名合并CSV文件,是我的情况:从不同的ZIP压缩文件

我有这样的20130101_001.zip,20130102_001.zip,20130103_001.zip文件名的多个zip档案等

这些档案中的每一个包含具有相同名称的CSV文件: file1.csv,file2.csv,file3.csv(这些文件是不一样的,但它们都具有跨所有档案的名称相同)

我在ETL过程中使用这些文件,我想解压所有的档案并合并这些文件,所以我必须运行该过程只有一次。 如果有这样做的方式,以便文件没有重复的记录,这将是很好的,但如果不能实现,我会使用ETL工具来删除它们。

这应该在Windows中完成的,我没有语言首选项。

+0

我用7zip来解压缩所有的压缩文件,并得到file1.csv,file1(1).csv等,但是我没有设法遍历这些并合并它们。 我也试过在cmd中简单复制,并将文件附加到另一个..现在我需要结合这.. – quickshare

回答

0

感谢您的答复,最终我解决了它没有cmdlet。

我用7zip的命令来解压缩所有文件,然后将该批处理脚本合并文件:

setlocal 
set first=1 
>pro.txt (
    for %%F in (file1*.csv) do (
    if defined first (
     type "%%F" 
     set "first=" 
    ) else more +1 "%%F" 
) 
) 

我有大约20个文件,所以我重复这个循环为他们每个人。 后来我使用SyncSort对记录进行了归一化处理

1

看一看的cmdlet ConvertFrom-CSV和的ConvertTo-CSV。它们允许您将csv转换为PowerShell对象数组,反之亦然。

的语法很简单:然后

$csvObject1 = Get-Content $pathToCSVFile | ConvertFrom-Csv 

重复此要处理任何CSV文件,并可以执行你在PowerShell中需要合并他们的任何逻辑。完成后,使用这个:

$csvOutputObject | ConvertTo-Csv -NoTypeInformation | Set-Content $pathToOutputCSVFile