从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
答案 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或更高版本。