拆分CSV文件导入基于列的值少数的CSV文件

问题描述 投票:1回答:1

我试图分裂csv文件成较小的CSV文件,这是在CSV文件中列BusinessUnit的基础上。

到现在为止我已经试过: -

$fullpath = "C:\Batch\Output Folder\ErroreportforAllregions.csv"

$path = Split-Path $fullpath -parent
$data = Import-CSV  -Path $fullpath -Header BusinessUnit,Date,Time,PolicyNum


foreach ($group in $data | Group BusinessUnit){        
    $data | Where-Object {$_.species -eq $group.name} | 
        ConvertTo-Csv -NoTypeInformation | 
         foreach {$_.Replace('"','')}|
        Out-File "$path\$($group.name).csv"     
}

但在这行(数据)不小的CSV文件来。请指引我到哪里,我做了错误。

我在大csv文件数据: -

BusinessUnit    serialno
Eastern Region   1
Ottawa           2
India            3

输出应该是

  • EasternRegion.csv
  • Ottawa.csv
  • India.csv
powershell
1个回答
1
投票

假设你的大CSV实际上看起来是这样的:

"BusinessUnit","Date","Time","PolicyNum","serialno"
"Eastern Region","2019-02-04","11:09:45","123","1"
"Eastern Region","2019-02-03","10:09:45","123","1"
"Ottawa","2019-02-04","11:09:45","123","1"
"India","2019-02-04","11:09:45","123","1"

那么这个应该这样做:

$fullpath = "C:\Batch\Output Folder\ErroreportforAllregions.csv"
$path = Split-Path $fullpath -parent
$data = Import-CSV -Path $fullpath

$data | Group-Object -Property BusinessUnit | ForEach-Object {
    $file = Join-Path -Path $path -ChildPath ($_.Name + '.csv')
    $_.Group | Export-Csv -Path $file -NoTypeInformation
}

使用上面的数据,将创建三个CSV文件中称为Eastern Region.csvOttawa.csvIndia.csv

东方Region.csv

"BusinessUnit","Date","Time","PolicyNum","serialno"
"Eastern Region","2019-02-04","11:09:45","123","1"
"Eastern Region","2019-02-03","10:09:45","123","1"

Ottawa.csv

"BusinessUnit","Date","Time","PolicyNum","serialno"
"Ottawa","2019-02-04","11:09:45","123","1"

India.csv

"BusinessUnit","Date","Time","PolicyNum","serialno"
"India","2019-02-04","11:09:45","123","1"

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.