【问题标题】:Import data from one CSV to another CSV file - How?将数据从一个 CSV 导入另一个 CSV 文件 - 如何?
【发布时间】:2020-06-17 18:11:24
【问题描述】:

我有 2 个几乎相同的 CSV 文件。 CSV1 如下所示:

Name,Surname,Town,Contry
Ann,Carlson,London,UK
Bert,Anderson,Copenhagen,DK
Gilbert,Norman, Bonn,DE
etc. etc

CSV2 看起来像这样:

Town,Contry
London,England
Copenhagen,Denmark
Bonn,Germany
etc. etc.

文件的行数完全相同,我需要将 Contry 列从 CSV2(包括数据)移动/附加到 CSV1 或新的 CSV 文件。

到目前为止我所拥有的是:

...
$A=import-csv -path CSV1.csv|Select-object -property Name, SurName, Town
$B=Import-csv -path CSV2.csv|Select-obejct -property Country
...

那么 - 我如何合并这 2 个变量并将它们导出到一个新文件?

【问题讨论】:

标签: powershell csv


【解决方案1】:

您可以执行以下操作,这很容易编写代码,但不如使用查找表那么高效。但是,无论数据顺序如何,这都有效。

$csv1 = Import-Csv a.csv
$csv2 = Import-Csv b.csv

foreach ($row in $csv1) {
    $row.Contry = $csv2.where({$_.Town -eq $row.Town},'First').Contry
}

$csv1 | Export-Csv -Path new.csv -NoType

如果每个 CSV 的每一行都完美排列以匹配 Town 数据,那么您可以使用每个文件的数组索引来更快地处理更改。

$csv1 = Import-Csv a.csv
$csv2 = Import-Csv b.csv

for ($i = 0; $i -lt $csv1.Count; $i++) {
    $csv1[$i].Contry = $csv2[$i].Contry
}

$csv1 | Export-Csv -Path new.csv -NoType

【讨论】:

    【解决方案2】:

    快速'n'脏方法。您可以使用如下嵌套循环来获取字段并写入新文件。

    $A=import-csv -path CSV1.csv|Select-object -property Name, SurName, Town
    $B=Import-csv -path CSV2.csv|Select-object -property Town, Contry
    
    $resultCsv = @();
    $A | ForEach-Object {
        $_person = $_;
        $B | ForEach-Object{
            $_country = $_;
            if($_person.Town -eq $_country.Town){
                Write-Host "$($_person.Name),$($_person.Surname),$($_person.Town),$($_country.Contry)";
                $resultCsv += [pscustomobject] @{"Name"=$_person.Name;"Surname"=$_person.Surname;"Town"=$_person.Town;"Contry"=$_country.Contry}
            }        
        }    
    }
    
    $resultCsv | Export-Csv -Path output.csv -NoTypeInformation
    

    请注意 $B=Import-Csv ... 行,我添加了第二个字段“Town” - 您需要此字段才能找到与 $A 中的字段匹配的字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2018-09-29
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多