Разделить CSV-файл на небольшое количество CSV-файлов в зависимости от значения столбца - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь разделить CSV-файл на более мелкие CSV-файлы на основе BusinessUnit, который является столбцом в CSV-файле.

До сих пор я пробовал: -

$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

1 Ответ

0 голосов
/ 04 февраля 2019

Предположим, что ваш большой 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.csv, Ottawa.csv и India.csv.

Восточный регион.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"

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...