Сравните несколько таблиц и создайте выход CSV - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь сравнить два CSV-файла, первый называется tickets.csv и содержит заголовки столбцов: «tcn», «two», «twod». Второй файл называется tracker.csv и содержит заголовки: «cn», «wo» и «wod». Я хотел бы вывести содержимое tracker.csv, и если какой-либо "tcn" (tickets.csv) совпадает с "cn" (tracker.csv), то записать связанные с ним "two" (tickets.csv) в "wo" ( tracker.csv) и "twod" (tickets.csv) в "wod" (tracker.csv).

Я сталкиваюсь с проблемой, когда мой код не перемещает "два" или " wod ", и это также запись каждого объекта 4 раза.

Входные CSVs

Import-Csv "$home\Desktop\nestTest\tracker.csv" |
ForEach-Object {
    $machine = $_.machine
    $wo = ""
    $wod = ""
    $tickets = import-csv "$home\Desktop\nestTest\tickets.csv"
    foreach ($ticket in $tickets) {
        try {
        $tcn = ""
        $two = ""
        $twod = ""
        $two = $_.wo
        $twod = $_.wod
        $tcn = $_.cn
        if ($tcn -eq $machine) {
            $wo = $two
            $wod = $twod
        }
        else {
        $wo = ""
        $wod = ""
        }
        }
        catch {
        }
        [pscustomobject]@{
        "Machine Name"=$machine
        "Work Order #"=$wo
        "Work Order Date"=$wod
        }
     }
} |
        select "Machine Name","Work Order #","Work Order Date" |
        Export-Csv "$home\Desktop\nestTest\output.csv"

1 Ответ

0 голосов
/ 17 апреля 2020

Я смотрел в неправильном направлении раньше. Но я понял это.

$tracker = Import-Csv "$home\Desktop\nestTest\tracker.csv" |
ForEach-Object {
    $machine = ""
    $wo = ""
    $wod = ""
    $machine = $_.machine
    $tickets = import-csv "$home\Desktop\nestTest\tickets.csv" |
    ForEach-Object {
        $two = ""
        $twod = ""
        $two = $_."wo"
        $twod = $_."wod"
        $tcn = $_."cn"
        if ($tcn -eq $machine) {
            $wo = $two
            $wod = $twod
        }
        else {
        }
    }
        [pscustomobject]@{
        "Machine Name"=$machine
        "Work Order #"=$wo
        "Work Order Date"=$wod
        }

} |
select "Machine Name","Work Order #","Work Order Date" |
Export-Csv "$home\Desktop\nestTest\output.csv" -NoTypeInformation
...