Mehrere CSV-Files in eine Datei
Hallo an die Community,
ich habe eine Frage und vielleicht kennt einer von euch eine Möglichkeit dies umzusetzen.
Ich habe eine Vielzahl an einzeiligen CSV-Dateien.
Diese möchte ich gern zu einer Datei zusammenführen um eine bessere Auswertung durchführen zu können.
Wenn es eine Möglichkeit geben würde, wie ich im Notepad++ z.B. eine CSV geöffnet habe und dann "anfügen" könnte, wäre das schon mal recht hilfreich, oder es gibt eine Lösung wo ich im Bulk einfach die 80+ Dateien zusammenführen könnte. Jeder Dateiinhalt quasi eine neue Zeile.
Ich nehme auch Excel oder ein anderes Tool, solang das Ergebnis passt.
Vielleicht kann mir hier jemand helfen.
ich habe eine Frage und vielleicht kennt einer von euch eine Möglichkeit dies umzusetzen.
Ich habe eine Vielzahl an einzeiligen CSV-Dateien.
Diese möchte ich gern zu einer Datei zusammenführen um eine bessere Auswertung durchführen zu können.
Wenn es eine Möglichkeit geben würde, wie ich im Notepad++ z.B. eine CSV geöffnet habe und dann "anfügen" könnte, wäre das schon mal recht hilfreich, oder es gibt eine Lösung wo ich im Bulk einfach die 80+ Dateien zusammenführen könnte. Jeder Dateiinhalt quasi eine neue Zeile.
Ich nehme auch Excel oder ein anderes Tool, solang das Ergebnis passt.
Vielleicht kann mir hier jemand helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 91234305737
Url: https://administrator.de/contentid/91234305737
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
11 Kommentare
Neuester Kommentar
Servus.
Mit Powershell etwa ein kleiner Einzeiler wenn die Dateien keine Header haben
Mit Headern
Grüße Uwe
Mit Powershell etwa ein kleiner Einzeiler wenn die Dateien keine Header haben
Get-Content "c:\myfolder\*.csv" | Set-Content "d:\merged.csv"
Get-ChildItem -LiteralPath "c:\myfolder" -File -Filter *.csv | select -Expand Fullname | Import-Csv -Delimiter ";" -Encoding UTF8 | export-csv -LiteralPath "d:\merged.csv" -delimiter ";" -NoType -Encoding UTF8 -force
Moin,
mit oder ohne Überschriften? Ansonsten wäre mein PS-Einzeiler auf die Schnelle für csv mit Überschriften:
Trennzeichen und Kodierung evtl. anpassen.
hth
Erik
mit oder ohne Überschriften? Ansonsten wäre mein PS-Einzeiler auf die Schnelle für csv mit Überschriften:
get-childitem -filter *.csv | %{import-csv $_ -encoding utf8 -delimiter ";" | export-csv new.csv -encoding utf8 -delimiter ";" -notypeinformation -append -force}
Trennzeichen und Kodierung evtl. anpassen.
hth
Erik
Schon aber bei tausenden von Dateien müßig! Außer mann schreibt es in Excel vlt. runter - Zahlen hochsetzten - kopiert alles in Notepad++ und löscht \r\n. Dann hab man eine Zeile mit zig tausend Parametern.....
Solche Sauereien hab ich mal für kurz INSERTs in SQL gemacht. War aber nur ein Bruchteil. Wenn man sehr eilig hat und nur Regex als kleinen Teil einsetzen will. Batch oder PS sind bei einzeiligen CSV kein Problem. Gibt ja keinen Header.
Zitat von @colinardo:
Mit Headern
Mit Headern
Get-ChildItem -LiteralPath "c:\myfolder" -File -Filter *.csv | select -Expand Fullname | Import-Csv -Delimiter ";" -Encoding UTF8 | export-csv "d:\merged.csv" -delimiter ";" -NoType -Encoding UTF8 -force
Geht das ohne foreach-object hinter der ersten Pipe?
Zitat von @erikro:
Geht das ohne foreach-object hinter der ersten Pipe?
Zitat von @colinardo:
Mit Headern
Mit Headern
Get-ChildItem -LiteralPath "c:\myfolder" -File -Filter *.csv | Import-Csv -Delimiter ";" -Encoding UTF8 | export-csv "d:\merged.csv" -delimiter ";" -NoType -Encoding UTF8 -force
Geht das ohne foreach-object hinter der ersten Pipe?
Ja, Import-CSV akzeptiert mehrere Pfade für den Path Parameter auch als InputParameter via Pipe setzt aber eine aktuelle PS voraus.
Zitat von @colinardo:
Ja, Import-CSV akzeptiert mehrere Pfade für den Path Parameter auch als InputParameter via Pipe, setzt aber eine aktuelle PS voraus.
Zitat von @erikro:
Geht das ohne foreach-object hinter der ersten Pipe?
Zitat von @colinardo:
Mit Headern
Mit Headern
Get-ChildItem -LiteralPath "c:\myfolder" -File -Filter *.csv | select -Expand Fullname | Import-Csv -Delimiter ";" -Encoding UTF8 | export-csv "d:\merged.csv" -delimiter ";" -NoType -Encoding UTF8 -force
Geht das ohne foreach-object hinter der ersten Pipe?
Ja, Import-CSV akzeptiert mehrere Pfade für den Path Parameter auch als InputParameter via Pipe, setzt aber eine aktuelle PS voraus.
Wieder was gelernt.
Dann aber bitte mit /B wenn es keine reinen ASCII Dateien sind.
👍, man muss aber beachten das wenn man Powershell Versionen < 6 einsetzt Import-CSV noch einen Bug hat bzw. den Pfad nicht aus den Properties des Pipeine-Objects entnehmen kann, hier muss man den Pfad expandieren bevor man ihn an Import-CSV übergibt (Habe das oben aus Kompatibilitätsgründen noch ergänzt).
PS 6 und 7 akzeptieren inzwischen das ganze File-Object als Input.
Get-ChildItem -LiteralPath "c:\myfolder" -File -Filter *.csv | select -ExpandProperty Fullname | Import-Csv ............