-4
我尝试使用“用户ID”列这是在这两个文件共同来比较2个CSV文件,并想以CSV 1失踪条目从CSV 2追加使用电源外壳比较两个CSV文件,并从第二个缺失项追加到1
我尝试使用“用户ID”列这是在这两个文件共同来比较2个CSV文件,并想以CSV 1失踪条目从CSV 2追加使用电源外壳比较两个CSV文件,并从第二个缺失项追加到1
如果第一个CSV文件已丢失行,他们需要在直接从第二CSV文件复制:如果你也说,用户ID是独特
ipcsv 2.csv |? 'User Id' -notin (ipcsv 1.csv).'User Id' | epcsv 1.csv -Append
您文件中,可以代替拿出一套两的CSV的独特行到第一个CSV:
(ipcsv 1.csv, 2.csv) | sort -Unique 'User Id' | epcsv 1.csv -NoTypeInformation
或者,如果你说的文件具有相同的用户ID,但不具有相同的其他列,并在第一个CSV的条目是存在的,但有一些空列,则:
$csv1 = Import-Csv d:\file1.csv
$csv2 = Import-Csv d:\file2.csv
foreach ($csv1item in $csv1)
{
$csv2item = $csv2.Where{$_.'User Id' -eq $csv1item.'User Id'}
$item1Properties = $csv1item | Get-Member -MemberType NoteProperty | select -ExpandProperty Name
$item2Properties = $csv2item | Get-Member -MemberType NoteProperty | select -ExpandProperty Name
$sharedProperties = $item1Properties.where{$_ -in $item2Properties}
$sharedProperties | ForEach-Object {
$value = $csv1item."$_"
if ($value -eq '') {
$csv1item."$_" = $csv2item."$_"
}
}
}
$csv1 | Export-Csv D:\file1.csv -NoTypeInformation
或者再次,如果你说这两个文件都在其“用户ID”重叠,各个条目也从第一CSV完全缺失,而非存在缺失列不同的列,那么这将增加他们从第二CSV,只服用在它们之间重叠(希望)的属性:
$csv1 = Import-Csv d:\file1.csv
$csv2 = Import-Csv d:\file2.csv
$item1Properties = ($csv1[0] | gm -M NoteProperty).Name
$newCsv1Items = foreach($csv2item in $csv2.Where{$csv1.'User Id' -notcontains $_.'User ID'}) {
$newcsv1Item = @{}
$item1Properties.ForEach{$newcsv1Item."$_" = $csv2item."$_"}
[PSCustomObject]$newcsv1Item
}
$newCsv1Items | Export-Csv -Append D:\file1.csv
https://blogs.technet.microsoft.com/stefan_stranger/2011/02/08/compare-two-different-csv-files-using-powershell/ 试试这个比较第一个 http:// stackoverflow.com .COM /问题/ 25601492/PowerShell的比较,二,CSV,文件和文件输出的重复的,名称 –
欢迎堆栈溢出!我们是一个帮助程序员和编程爱好者的社区。这就是说,期望你在发布之前展示你已经完成或尝试了什么。这给了我们一些建设。截至目前,这看起来像是一个代码编写请求,这是SO的主题。将您的问题分解成各个部分,并分别搜索这些问题的解决方案。然后,如果你仍然有问题,请[编辑]你的问题显示您的工作,以便我们能够更好地帮助您和社区。 – Matt