这是我的情况:
我有多个zip档案,文件名如20130101_001.zip,20130102_001.zip,20130103_001.zip等。
每个档案都包含具有相同名称的csv文件: file1.csv,file2.csv,file3.csv(这些文件不一样,但它们在所有档案中都有相同的名称)
我在ETL过程中使用这些文件,我想解压缩所有存档并将这些文件合并在一起,因此我只需运行一次该过程。 如果有一种方法这样做,所以文件没有重复的记录,这将是伟大的,但如果无法实现,我会使用ETL工具删除它们。
这应该在Windows中完成,我没有语言偏好。
答案 0 :(得分:1)
查看cmdlet ConvertFrom-Csv和ConvertTo-Csv。它们允许您将csv转换为PowerShell对象数组,反之亦然。
语法非常简单:
$csvObject1 = Get-Content $pathToCSVFile | ConvertFrom-Csv
对要处理的任何csv文件重复此操作,然后可以在PowerShell中执行所需的任何逻辑以合并它们。完成后,使用:
$csvOutputObject | ConvertTo-Csv -NoTypeInformation | Set-Content $pathToOutputCSVFile
答案 1 :(得分: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
规范化记录