Zwei CSV-Dateien vergleichen und Unterschiede ausgeben
Hallo Zusammen,
ich komme einfach nicht weiter. Vielleicht kann mir einer von Euch helfen.
Ich habe zwei CSV-Dateien, die ich vergleichen möchte.
CSV1 enthält alle z.Z. gespeicherten Datensätze.
In CSV2 hingegen ist ggf. nur ein Teil der Datensätze verfügbar, es können aber auch neue Datensätze enthalten sein und die enthaltenen Datensätze können Unterschiede enthalten.
Im Feld NUMMER ist der eindeutige Wert, der den Datensatz identifiziert gespeichert.
Die Werte NAME und ANZAHL können differieren. Diese möchte ich, zusätzlich zu den "zusätzlichen" Datensätze aus Datei CSV2 ausgeben.
CSV1
Nummer:Name;Anzahl
1;Test1;4
2;Test2;2
3;Test3;7
4;Test4;8
5;ZUM;4
6;TGV;1
CSV2
Nummer:Name;Anzahl
1;Test1;4
2;Test2;2
3;Test3;1
4;Test4;1
5;ABC;3
Gewünschte Ausgabe:
3;Test3;1
4;Test4;1
5;ABC;3
Hier mein bisheriges "Skript" :
Leider schaffe ich es nicht, nur die unterschiedlichen oder fehlenden Zeilen in die Ausgabe-Datei zu schreiben.
Für jede Hilfe wäre ich sehr dankbar.
VG
Abacus
ich komme einfach nicht weiter. Vielleicht kann mir einer von Euch helfen.
Ich habe zwei CSV-Dateien, die ich vergleichen möchte.
CSV1 enthält alle z.Z. gespeicherten Datensätze.
In CSV2 hingegen ist ggf. nur ein Teil der Datensätze verfügbar, es können aber auch neue Datensätze enthalten sein und die enthaltenen Datensätze können Unterschiede enthalten.
Im Feld NUMMER ist der eindeutige Wert, der den Datensatz identifiziert gespeichert.
Die Werte NAME und ANZAHL können differieren. Diese möchte ich, zusätzlich zu den "zusätzlichen" Datensätze aus Datei CSV2 ausgeben.
CSV1
Nummer:Name;Anzahl
1;Test1;4
2;Test2;2
3;Test3;7
4;Test4;8
5;ZUM;4
6;TGV;1
CSV2
Nummer:Name;Anzahl
1;Test1;4
2;Test2;2
3;Test3;1
4;Test4;1
5;ABC;3
Gewünschte Ausgabe:
3;Test3;1
4;Test4;1
5;ABC;3
Hier mein bisheriges "Skript" :
$csv1 = Import-CSV 'D:\Pruef\Alle.csv' -Delimiter ";"
$csv2 = Import-CSV 'D:\Pruef\Teil1_export.csv' -Delimiter ";"
Compare $csv1 $csv2 -Property Nummer,Name,Anzahl | Export-Csv D:\Pruef\Ausgabe.csv -NoTypeInformation
Leider schaffe ich es nicht, nur die unterschiedlichen oder fehlenden Zeilen in die Ausgabe-Datei zu schreiben.
Für jede Hilfe wäre ich sehr dankbar.
VG
Abacus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 71672301436
Url: https://administrator.de/contentid/71672301436
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
Moin,
Dann mußt Du im prinzip das obige in einem Powershell-Äquivalent schreiben, z.B:
https://serverfault.com/questions/5598/how-do-i-diff-two-text-files-in-w ...
https://mcpmag.com/articles/2018/08/08/replace-text-with-powershell.aspx
lks
Dann mußt Du im prinzip das obige in einem Powershell-Äquivalent schreiben, z.B:
https://serverfault.com/questions/5598/how-do-i-diff-two-text-files-in-w ...
https://mcpmag.com/articles/2018/08/08/replace-text-with-powershell.aspx
lks
Moin,
tio.run
Gruß Thomas
Zitat von @Abacus08:
Hier mein bisheriges "Skript" :
Leider schaffe ich es nicht, nur die unterschiedlichen oder fehlenden Zeilen in die Ausgabe-Datei zu schreiben.
einfach nach dem SideIndicator filtern...Hier mein bisheriges "Skript" :
$csv1 = Import-CSV 'D:\Pruef\Alle.csv' -Delimiter ";"
$csv2 = Import-CSV 'D:\Pruef\Teil1_export.csv' -Delimiter ";"
Compare $csv1 $csv2 -Property Nummer,Name,Anzahl | Export-Csv D:\Pruef\Ausgabe.csv -NoTypeInformation
Leider schaffe ich es nicht, nur die unterschiedlichen oder fehlenden Zeilen in die Ausgabe-Datei zu schreiben.
$csv1 = Import-CSV 'D:\Pruef\Alle.csv' -Delimiter ";"
$csv2 = Import-CSV 'D:\Pruef\Teil1_export.csv' -Delimiter ";"
Compare $csv1 $csv2 -Property Nummer,Name,Anzahl | ? SideIndicator -eq '=>' | Select Nummer,Name,Anzahl | Export-Csv -d ';' D:\Pruef\Ausgabe.csv -NoTypeInformation
Gruß Thomas