powershell - 在添加新条目和覆盖现有条目时合并两个 CSV 文件

标签 powershell csv merge hashtable export-to-csv

我有一个 configuration.csv包含这样的模板数据:

| path       | item  | value  | type |
|------------|-------|--------|------|
| some/path  | item1 | value1 | ALL  |
| some/path  | item2 | UPDATE | ALL  |
| other/path | item1 | value2 | SOME |

customization.csv具有服务特定配置的:
| path       | item  | value  | type |
|------------|-------|--------|------|
| some/path  | item2 | value3 | ALL  |
| new/path   | item3 | value3 | SOME |

我的目标是合并它们并最终得到如下结果:
| path       | item  | value  | type |
|------------|-------|--------|------|
| some/path  | item1 | value1 | ALL  |
| some/path  | item2 | value3 | ALL  |
| other/path | item1 | value2 | SOME |
| new/path   | item3 | value3 | SOME |

这应该 添加任何新条目和更新 任何现有的。没有一列可用于唯一标识 - pathitem需要组合,因为它们保证是唯一的。

最佳答案

我建议使用 Compare-Object并作为 customization.csv 中的值应坚持将此文件值用作 -ReferenceObject

## Q:\Test\2019\03\01\SO_54948111.ps1

$conf = Import-Csv '.\configuration.csv'
$cust = Import-Csv '.\customization.csv'

$NewData = Compare-Object -ref $cust -diff $conf -Property path,item -PassThru -IncludeEqual|
    Select-Object -Property * -ExcludeProperty SideIndicator

$NewData
$NewData |Export-Csv '.\NewData.csv' -NoTypeInformation

样本输出
> Q:\Test\2019\03\01\SO_54948111.ps1

path       item  value  type
----       ----  -----  ----
some/path  item2 value3 ALL
some/path  item1 value1 ALL
other/path item1 value2 SOME
new/path   item3 value3 SOME

关于powershell - 在添加新条目和覆盖现有条目时合并两个 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54948111/

相关文章:

csv - 使用DBeaver,当尝试将数据从CSV导出到我的Hive数据库时,导出卡住吗?

svn - Subversion 合并后树冲突 - "local delete, incoming edit upon merge"

git - 在 GIT 上手动 merge

tfs - 没有目标分支的源代码管理合并向导

powershell - 解压缩后仅复制某些文件类型

python - virtualenv 激活不起作用

powershell - 如何列出根目录下的 namespace ?

powershell - 如何使用 PowerShell 更新 XML 节点的值?

python - 读取文本文件时,Python可以从字符串中删除双引号吗?

java - 如何在android中将数据库记录转换为csv文件?