CSV MAX Werte auslesen ohne Überschreiben der Vorhandenen Werte der neuen CSV-Datei
Hallo
mein Problem, ist ich habe einen Ordner mit einer Unbestimmten Anzahl von CSV Dateien.
Aus diesem Ordner soll von jeder CSV Datei der MAX-Wert ausgelesen werden und in eine neue CSV Datei geschrieben werden.
Hier ist mein aktuelles Powershell-Skript leider kann ich hier nur einzelne Dateien auslesen.
Auserdem soll das Skript die MAX-Werte in der neuen CSV Datei nicht überschreiben
und auch nur die MAX-Werte die noch nicht in der neuen CSV Datei vorhanden sind reinschreiben.
Die CSV-Dateien aus denen der MAX-Wert gelesen werden soll, sehen zum Teil so aus:
"Series";"Time";"Value"
"Total Session Number";"2020-01-15 01:00";55
"Total Session Number";"2020-01-15 01:02";57
"Total Session Number";"2020-01-15 01:04";57
"Total Session Number";"2020-01-15 01:06";57
"Session Access";"2020-01-15 17:36";"197"
Das erwartete Ergebnis soll so aussehen:
"Series";"Time";"Value"
"Total Session Number";"2020-01-15 17:36";"197"
"Session Access";"2020-01-15 17:36";"197"
Da die CSV-Dateien zum Teil nicht immer die gleichen sind (Unterschiedlicher "Series" Name und unterschiedlicher Datei-Name)war meine Idee,
die vorhanden MAX-Werte anhand des Series Namen und der Time zuvergleichen.
Dies hatte ich überlegt, mit Hilfe eines Arrays oder ähnlichem zu lösen.
Leider wüsste ich nicht, wie ich das machen sollte.
Kann mir jemand bei der Lösung des Problems helfen?
mein Problem, ist ich habe einen Ordner mit einer Unbestimmten Anzahl von CSV Dateien.
Aus diesem Ordner soll von jeder CSV Datei der MAX-Wert ausgelesen werden und in eine neue CSV Datei geschrieben werden.
Hier ist mein aktuelles Powershell-Skript leider kann ich hier nur einzelne Dateien auslesen.
Import-CSV 'Ordner-Path' -Delimiter ";" -Encoding Default | sort {[decimal]$_.Value} -Descending | select -F 1 | export-csv 'C:\Users\LeonThomas\Desktop\CSV-Test\test\Maxwert.csv' -Delimiter ";" -NoType -Encoding Default -Append #>
Auserdem soll das Skript die MAX-Werte in der neuen CSV Datei nicht überschreiben
und auch nur die MAX-Werte die noch nicht in der neuen CSV Datei vorhanden sind reinschreiben.
Die CSV-Dateien aus denen der MAX-Wert gelesen werden soll, sehen zum Teil so aus:
"Series";"Time";"Value"
"Total Session Number";"2020-01-15 01:00";55
"Total Session Number";"2020-01-15 01:02";57
"Total Session Number";"2020-01-15 01:04";57
"Total Session Number";"2020-01-15 01:06";57
"Session Access";"2020-01-15 17:36";"197"
Das erwartete Ergebnis soll so aussehen:
"Series";"Time";"Value"
"Total Session Number";"2020-01-15 17:36";"197"
"Session Access";"2020-01-15 17:36";"197"
Da die CSV-Dateien zum Teil nicht immer die gleichen sind (Unterschiedlicher "Series" Name und unterschiedlicher Datei-Name)war meine Idee,
die vorhanden MAX-Werte anhand des Series Namen und der Time zuvergleichen.
Dies hatte ich überlegt, mit Hilfe eines Arrays oder ähnlichem zu lösen.
Leider wüsste ich nicht, wie ich das machen sollte.
Kann mir jemand bei der Lösung des Problems helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 545087
Url: https://administrator.de/forum/csv-max-werte-auslesen-ohne-ueberschreiben-der-vorhandenen-werte-der-neuen-csv-datei-545087.html
Ausgedruckt am: 27.04.2025 um 11:04 Uhr
1 Kommentar

# ===========
$path_ordner = 'D:\Daten'
$path_maxwerte = 'D:\maxwerte.csv'
# ===========
if (Test-Path $path_maxwerte){
$maxwerte = Import-Csv $path_maxwerte -Delimiter ";"
}else{
$maxwerte = @()
}
Get-ChildItem -LiteralPath $path_ordner -Filter *.csv -File | %{
$maxwerte += Compare $maxwerte (Import-CSV $_.Fullname -Delimiter ";" | sort {[datetime]$_.Time} -Descending | sort {[int]$_.Value} -Descending | group Series | %{$_.Group}) -Property Series,Time,Value | ?{$_.SideIndicator -eq '=>'} | select * -ExcludeProperty SideIndicator
}
$maxwerte | export-csv $path_maxwerte -Delimiter ";" -NoType -Encoding UTF8