CSV-Dateien mit unterschiedlichen Headern über ID zusammenfassen
Hallo zusammen,
ich stehe gerade vor einer ziemlich verzwickten Aufgabe. Wie der Titel breits sagt, habe ich unterschiedliche CSV-Dateien mit verschiedenen Headern. Diese möchte ich über eine ID zu einer CSV zusammenführen. Ich habe mich hier über das Forum natürlich vorab schon mal schlau gemacht, aber leider scheint die Sache hier doch ein bisschen speziell zu sein, da hier noch daten konvertiert und nach einem Textsegement gefiltert werden muss um dann damit eine query-Abfrage zu erstellen. Da steige ich dann leider aus und habe hierfür auch noch keine Lösung im Netz gefunden.
Aufbau srcFile1.csv
| Datum | Vorgangs-ID | Vorname | Nachname | etc... |
| 12/27/21 | 0000002 | Martin | Mustermann |
| 12/25/21 | 0000001 | Helga | Schmidt |
Aufbau srcFile2.csv
| Datum | Ort | Strasse | PLZ | Vorgangs-ID | Versanddatum | etc... |
| 12/27/21 | München | Im Nirgendwo 1 | 80125 | 0000002 | 12/27/21 |
| 12/25/21 | Buxtehude | Besterplatz 39 | 21614 | 0000001 | 12/27/21 |
Aufbau srcFile3.csv
| Datum | Info | Betrag | etc... |
| 27.12.2021 | Zusatzinfo für Vorgang ID: 0000002 | €10.00 |
| 25.12.2021 | Zusatzinfo für Vorgang ID: 0000001 | €11.00 |
Aufbau tgtFile.csv
| Vorgangs-ID | Datum1 | Datum2 | Datum3 | Betrag | Vorname | Nachname | Ort | Strasse | PLZ | Versanddatum |
| 0000002 | 27.12.2021 | 27.12.2021 | 27.12.2021 | 10,00 | Martin | Mustermann | München | Im Nirgendwo 1 | 80125 | 27.12.2021 |
| 0000001 | 25.12.2021 | 25.12.2021 | 25.12.2021 | 11,00 | Helga | Schmidt | Buxtehude | Besterplatz 39 | 21614 | 27.12.2021 |
Ich hoffe ich konnte es einigermaßen versändlich darstellen worrauf ich hinaus will.
Danke und Gruß Domenik
ich stehe gerade vor einer ziemlich verzwickten Aufgabe. Wie der Titel breits sagt, habe ich unterschiedliche CSV-Dateien mit verschiedenen Headern. Diese möchte ich über eine ID zu einer CSV zusammenführen. Ich habe mich hier über das Forum natürlich vorab schon mal schlau gemacht, aber leider scheint die Sache hier doch ein bisschen speziell zu sein, da hier noch daten konvertiert und nach einem Textsegement gefiltert werden muss um dann damit eine query-Abfrage zu erstellen. Da steige ich dann leider aus und habe hierfür auch noch keine Lösung im Netz gefunden.
Aufbau srcFile1.csv
| Datum | Vorgangs-ID | Vorname | Nachname | etc... |
| 12/27/21 | 0000002 | Martin | Mustermann |
| 12/25/21 | 0000001 | Helga | Schmidt |
Aufbau srcFile2.csv
| Datum | Ort | Strasse | PLZ | Vorgangs-ID | Versanddatum | etc... |
| 12/27/21 | München | Im Nirgendwo 1 | 80125 | 0000002 | 12/27/21 |
| 12/25/21 | Buxtehude | Besterplatz 39 | 21614 | 0000001 | 12/27/21 |
Aufbau srcFile3.csv
| Datum | Info | Betrag | etc... |
| 27.12.2021 | Zusatzinfo für Vorgang ID: 0000002 | €10.00 |
| 25.12.2021 | Zusatzinfo für Vorgang ID: 0000001 | €11.00 |
Aufbau tgtFile.csv
| Vorgangs-ID | Datum1 | Datum2 | Datum3 | Betrag | Vorname | Nachname | Ort | Strasse | PLZ | Versanddatum |
| 0000002 | 27.12.2021 | 27.12.2021 | 27.12.2021 | 10,00 | Martin | Mustermann | München | Im Nirgendwo 1 | 80125 | 27.12.2021 |
| 0000001 | 25.12.2021 | 25.12.2021 | 25.12.2021 | 11,00 | Helga | Schmidt | Buxtehude | Besterplatz 39 | 21614 | 27.12.2021 |
Ich hoffe ich konnte es einigermaßen versändlich darstellen worrauf ich hinaus will.
Danke und Gruß Domenik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1664248916
Url: https://administrator.de/contentid/1664248916
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
5 Kommentare
Neuester Kommentar
Ich würde das ja über 3 Datenbank-Tabellen und einem einfachen SQL-JOIN der drei Tabellen miteinander machen. Das wäre in der Regel die bevorzugte Methode da die Daten ja in der Regel meist eh aus einer Datenbank kommen.
Ist aber mittels Powershell aber auch schnell zusammen gezimmert.
(Delimiter und Pfade anpassen.)
Ist aber mittels Powershell aber auch schnell zusammen gezimmert.
(Delimiter und Pfade anpassen.)
$csv1 = Import-CSV "D:\srcFile1.csv" -Delimiter ";"
$csv2 = Import-CSV "D:\srcFile2.csv" -Delimiter ";"
$csv3 = Import-CSV "D:\srcFile3.csv" -Delimiter ";"
$output = "D:\tgtFile.csv"
$csv_out = $csv1 | Select 'Vorgangs-ID',Datum1,Datum2,Datum3,Betrag,Vorname,Nachname,Ort,Strasse,PLZ,Versanddatum
foreach($line in $csv_out){
$csv2_info = $csv2 | ?{$_.'Vorgangs-ID' -eq $line.'Vorgangs-ID'}
$csv3_info = $csv3 | ?{$_.Info -match $line.'Vorgangs-ID'}
$line.Datum1 = $line.Datum
$line.Datum2 = $csv2_info.Datum
$line.Datum3 = $csv3_info.Datum
$line.Ort = $csv2_info.Ort
$line.Strasse = $csv2_info.Strasse
$line.PLZ = $csv2_info.PLZ
$line.Versanddatum = $csv2_info.Versanddatum
$line.Betrag = ($csv3_info.Betrag -replace "[^\d\.]") -replace "\.",","
}
$csv_out | export-csv $output -Delimiter ";" -NoType -Encoding UTF8
Zitat von @ratatoskr:
Hi hacktor, danke für die Nachricht. Leider stehen mir keine SQL Daten zu Verfügung. Wenn dann müsste ich mir die Daten in eine Datenbank importieren und dann den Join machen. Das scheint mir aber ein wenig mit der Kirche um das Dorf.
Wieso, geht doch Ratz fatz und lässt sich ebenfalls Skripten wenn man Wert auf Performance legt 😉.Hi hacktor, danke für die Nachricht. Leider stehen mir keine SQL Daten zu Verfügung. Wenn dann müsste ich mir die Daten in eine Datenbank importieren und dann den Join machen. Das scheint mir aber ein wenig mit der Kirche um das Dorf.