pludan
Goto Top

PowerShell: CSV in CSV kopieren

Hallo

Ich bin an einem PS Skript dran der den Inhalt von CSV 1 in CSV 2 kopiert. Wie ist es möglich, dies so zu machen, das der Skript nur die Differenz kopiert. Also nur die Daten die in CSV 2 nicht enthalten sind ?

Mein wissen reicht bis jetzt nur, das der ganze Inhalt von CSV 1 in CSV 2 ergänzt wird.

Für euer Hilfe bin ich sehr Dankbar.

Beste Grüsse Daniel

Content-Key: 338596

Url: https://administrator.de/contentid/338596

Ausgedruckt am: 19.03.2024 um 06:03 Uhr

Mitglied: 132895
Lösung 132895 22.05.2017 aktualisiert um 16:49:11 Uhr
Goto Top
Mitglied: colinardo
Lösung colinardo 22.05.2017 aktualisiert um 18:23:02 Uhr
Goto Top
Servus Daniel,
Zitat von @132895:
Stichwort compare-object
Genau, damit geht das schnell und schmerzlos.

Hier ein Beispiel:
$csv1 = @"  
Name;Alter
Max;10
Michael;15
Hans;22
Klaus;11
"@ | convertfrom-csv -Delimiter ";"  

$csv2 = @"  
Name;Alter
Max;10
Klaus;11
"@ | convertfrom-csv -Delimiter ";"  

# Nur Zeilen in CSV2 ergänzen die dort noch nicht enthalten sind
$csv2 += compare $csv1 $csv2 -Property 'Name','Alter' -PassThru | ?{$_.SideIndicator -eq '<='}  

# Testweise CSV2 nun auf der Konsole ausgeben
$csv2
Ergebnis:
Name    Alter
----    -----
Max     10   
Klaus   11   
Michael 15   
Hans    22   
Die Definition der CSV-Dateien machst du bei dir natürlich per Import-CSV, die Variante über Convertfrom-CSV dient hier nur dazu ein repräsentatives Beispiel zu zeigen. Das essentielle passiert dann ja eh nur in Zeile 16. Wichtig ist das du dort im Parameter -Property die Spalten angibst welche verglichen werden sollen, d.h. alle Eigenschaften die du in dem Array angibst werden für einen Vergleich der Zeilen herangezogen.

Grüße Uwe
Mitglied: Pludan
Pludan 23.05.2017 um 08:37:38 Uhr
Goto Top
Hey Uwe

Dies hat so super geklappt face-smile

Vielen Dank
Grüsse Daniel