使用 Powershell 向现有 CSV 添加值

问题描述

我已经为此纠结了太久,希望您能提供帮助。

我有一个 CSV,我需要为其添加一些值,最好使用 Powershell。我需要添加标题行和具有固定文本值的一列。

我的 CSV,在对其进行任何操作之前,如下所示:

contact-email;contact-sms;contact-firstname
test@example.com;+3580000000;Mike

我需要它看起来像这样:

contact-email;contact-sms;contact-firstname;order-site
test@example.com;+3580000000;Mike;Finland

因此需要添加最后一列“order-site”,并且该列中的每一行都应具有“Finland”值。

到目前为止,我已经编写了这个 Powershell 脚本,我已经完成了教程:

$file = Import-Csv E:\Raportit\SALES\SALES_TD_S01.csv -Delimiter "`t" -Encoding Default -Header "contact-email;contact-sms;contact-firstname"

foreach($c in $file) {

    Add-Member -Input $c -MemberType NoteProperty -Name "order-site" -Value "Finland"

}

$file | Export-Csv -Path "C:\Temp\test.csv" -Encoding Default -NoTypeinformation

但不幸的是,这使 CSV 看起来像这样:

"contact-email;contact-sms;contact-firstname","order-site"
"test@example.com;+3580000000;Mike","Finland"

对于这个文件的用例,它需要看起来像第一个应该看起来像的例子,没有双引号和用分号 (;) 分隔的列。只要输出看起来像这样,双引号就可以了:

"contact-email;contact-sms;contact-firstname;order-site"
"test@example.com;+3580000000;Mike;Finland"

我提前非常感谢你们,我知道这可能是一项超级简单的任务,但我无法挽救我的生命。

解决方法

  1. 如果文件有标题:
Import-Csv -Path 'E:\Raportit\SALES\SALES_TD_S01.csv' -Delimiter ';' | 
    Select-Object *,@{Name = 'order-site'; Expression = {'Finland'}} |
    Export-Csv -Path "C:\Temp\test.csv" -Delimiter ';' -NoTypeInformation
  1. 如果文件没有标题:
$headers = 'contact-email','contact-sms','contact-firstname'
Import-Csv -Path 'E:\Raportit\SALES\SALES_TD_S01.csv' -Delimiter ';' -Header $headers | 
    Select-Object *,@{Name = 'order-site'; Expression = {'Finland'}} |
    Export-Csv -Path "C:\Temp\test.csv" -Delimiter ';' -NoTypeInformation

CSV 输出:

"contact-email";"contact-sms";"contact-firstname";"order-site"
"test@example.com";"+3580000000";"Mike";"Finland"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...