ratatoskr
Goto Top

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

Content-ID: 1664248916

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

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

Fennek11
Fennek11 28.12.2021 um 10:19:58 Uhr
Goto Top
Hallo,

ein möglicher Weg ist, die CSV in jeweils ein Sheet in Excel zu importieren und dann mit "=SVersweis()" zu verknüpfen.

mfg
149569
149569 28.12.2021, aktualisiert am 29.12.2021 um 07:56:14 Uhr
Goto Top
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.)
$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  
ratatoskr
ratatoskr 30.12.2021 um 02:27:16 Uhr
Goto Top
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.
Den Code werde ich gerne ausprobieren. Danke hierfür schon mal.
149569
149569 30.12.2021 aktualisiert um 07:50:01 Uhr
Goto Top
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 😉.
ratatoskr
ratatoskr 30.12.2021 um 16:03:20 Uhr
Goto Top
Ja vielleicht, wenn man nur ein blasse Ahnung davon hätte face-smile