RFB18
Lieutenant
- Registriert
- Dez. 2021
- Beiträge
- 938
Guten Morgen,
habe hier ein Problem, was sich mit PS definitiv lösen lässt. Leider kann ich nur kein PS...
Ich habe zwei csv Dateien, eine ist ein Abbild von Kundendaten. Das Trennzeichen ist leider die Pipe (|)
Nun wird täglich eine Delta Datei erstellt, welche nur Änderungen enthält.
Ziel ist es, die Änderungen aus der Delta in die komplette csv zu übernehmen, danach die Pipe durch ein , oder ; zu ersetzen.
Das muss dann automatisiert von der Aufgabenplanung auf nem Server laufen.
Die erste Spalte enthält eine eindeutige Kundennummer, anhand dieser kann entsprechend abgeglichen werden.
Testweise habe ich mal nen Generator für sowas befragt, da kam folgendes bei raus:
Eventuell hat ja jemand etwas Langeweile und kann sich hier austoben
habe hier ein Problem, was sich mit PS definitiv lösen lässt. Leider kann ich nur kein PS...
Ich habe zwei csv Dateien, eine ist ein Abbild von Kundendaten. Das Trennzeichen ist leider die Pipe (|)
Nun wird täglich eine Delta Datei erstellt, welche nur Änderungen enthält.
Ziel ist es, die Änderungen aus der Delta in die komplette csv zu übernehmen, danach die Pipe durch ein , oder ; zu ersetzen.
Das muss dann automatisiert von der Aufgabenplanung auf nem Server laufen.
Die erste Spalte enthält eine eindeutige Kundennummer, anhand dieser kann entsprechend abgeglichen werden.
Testweise habe ich mal nen Generator für sowas befragt, da kam folgendes bei raus:
Code:
<#
.SYNOPSIS
Combines two CSV files and overrides duplicates based on the first row.
.DESCRIPTION
This function takes two CSV files as input and combines them into a single CSV file.
If there are any duplicate rows based on the first row (header) of the CSV files,
the function overrides the duplicates with the rows from the second CSV file.
.PARAMETER csvFile1
The path to the first CSV file.
.PARAMETER csvFile2
The path to the second CSV file.
.PARAMETER outputCsvFile
The path to the output CSV file.
.EXAMPLE
Combine-CSVFiles -csvFile1 "C:\file1.csv" -csvFile2 "C:\file2.csv" -outputCsvFile "C:\combined.csv"
Combines file1.csv and file2.csv into combined.csv, overriding duplicates based on the first row.
#>
function Combine-CSVFiles {
param (
[Parameter(Mandatory=$true)]
[string]$csvFile1,
[Parameter(Mandatory=$true)]
[string]$csvFile2,
[Parameter(Mandatory=$true)]
[string]$outputCsvFile
)
# Read the contents of the first CSV file
$csv1 = Import-Csv -Path $csvFile1
# Read the contents of the second CSV file
$csv2 = Import-Csv -Path $csvFile2
# Create a hashtable to store the unique rows based on the first row (header)
$uniqueRows = @{}
# Add rows from the first CSV file to the hashtable
foreach ($row in $csv1) {
$key = $row | Select-Object -First 1 | ConvertTo-Json
$uniqueRows[$key] = $row
}
# Add rows from the second CSV file to the hashtable, overriding duplicates
foreach ($row in $csv2) {
$key = $row | Select-Object -First 1 | ConvertTo-Json
$uniqueRows[$key] = $row
}
# Convert the hashtable values back to an array of rows
$combinedCsv = $uniqueRows.Values
# Export the combined CSV to the output file
$combinedCsv | Export-Csv -Path $outputCsvFile -NoTypeInformation
}
Eventuell hat ja jemand etwas Langeweile und kann sich hier austoben