Ich möchte zwei CSV-Dateien zusammenführen, die denselben Header in einer CSV-Datei enthalten. Ich habe zwei solche Dateien wie unten dh DevData.csv
und ProdData.csv
mit gleichen cfname
und verschiedenen ID
sZwei CSV-Dateien zusammenführen
ID cfname -------------------- ----------------------------------- 10201 Risk ID 10202 Issue ID 10203 Dependency ID 10204 Server ID 10205 Parent Application ID 10206 Application Service ID 10207 Application Supportability 10208 Application Compatibility 10300 Application Status 10301 Contact ID Type 2 10302 Contact ID Type 3 10303 Contact ID Type 4 10304 Business Service Manager 10308 Server Location Name: 10309 Rack Position: 10310 Rack Number: 10311 Data Centre 10312 Server Group (14 rows affected)
ich neue CSV in folgendem Format erstellt werden soll gezeigt:
DevID ProdID cfname -------------------- ------ ----------------------------------- 10201 201 Risk ID 10202 202 Issue ID 10203 203 Dependency ID 10204 204 Server ID 10205 205 Parent Application ID 10206 206 Application Service ID 10207 207 Application Supportability 10208 208 Application Compatibility 10300 209 Application Status 10301 210 Contact ID Type 2 10302 211 Contact ID Type 3 10303 212 Contact ID Type 4 10304 213 Business Service Manager 10308 214 Server Location Name:
Es folgt meine aktuellen Code , aber es exportiert Daten der ersten Datei und darunter die Daten der nächsten Datei.
function Merge-CSVFiles {
[cmdletbinding()]
param(
[string[]]$CSVFiles
)
$Output = @();
foreach ($CSV in $CSVFiles) {
if (Test-Path $CSV) {
$FileName = [System.IO.Path]::GetFileName($CSV)
$temp = Import-CSV -Path $CSV |
select ID, cfname, ID, cfname, @{Expression={$FileName}}
$Output += $temp
} else {
Write-Warning "$CSV : No such file found"
}
}
$Output | Export-Csv -Path $OutputFile -NoTypeInformation
Write-Output "$OutputFile successfully created"
}
Merge-CSVFiles -CSVFiles "C:\Users\ECSAdmin\Desktop\Proddata.csv", "C:\Users\ECSAdmin\Desktop\Devdata.csv" -OutputFile "C:\Users\ECSAdmin\Desktop\Mergedata.csv"
"* zwei csv-Dateien, die den gleichen Header haben *" - aber 'ID, cfname' und' DevID, ProdID, cfname' sind nicht das Gleiche? – TessellatingHeckler
DevID und ProdID werden in der Ausgabe CSV-Datei kommen. Ich habe die gleiche Abfrage auf Entwicklung (erstellt Devdata.csv) und Produktion (erstellt Proddata.csv) db, die gleiche Ausgabe mit unterschiedlichen ID.So möchte ich diese beiden Dateien zusammenführen mit ProdID, DevID und cfname als Kopfzeilen in der endgültigen Ausgabe-CSV-Datei. – Abhaya
Sie müssen Header hinzufügen. 'import-csv -path ".csv" -Header DevID, ProdID, Cfname' und Zusammenführen von zwei csv ' $ merged = $ csv1 + $ csv2 fusionierte $ | Select -Property * -Unique – DisplayName