将CSV文件拆分为两列

时间:2016-08-25 22:25:30

标签: powershell csv

从500,000行CSV开始,我需要按日和小时(第二和第三列)拆分文件。我已经尝试修改组以包含小时,当我看到小时被添加到我的文件名时,我在导出的文件中没有得到任何结果。

foreach做这项工作:

foreach ($group in $data | Group Day,hour) {
  $data | Where-Object { $_.Day -and $_.Hour -eq $group.Name }
  ConvertTo-Csv -NoTypeInformation | 
    foreach {$_.Replace('"','')} | 
    Out-File "$Path\Testfile_$($group.name -replace $regexA, '').csv"

示例数据:

Bob,1/27/2012,8:00,Basic,Operations
Charlie,2/3/2012,9:00,Advanced,Production
Bill,3/7/2012,10:00,Advanced,Production

1 个答案:

答案 0 :(得分:3)

您可以导入CSV,动态确定输出文件名,并将每条记录追加到匹配文件中:

Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
  $filename = ('output_{0}_{1}.csv' -f $_.Day, $_.Hour) -replace '[/:]'
  $_ | Export-Csv "C:\path\to\$filename" -Append -NoType 
}

请注意,Export-Csv -Append需要PowerShell v3或更高版本。