【发布时间】:2018-10-11 00:35:25
【问题描述】:
所以我试图查看 CSV 中的列名,将它们写入一个数组,然后将数据吐回到一个新的 CSV 中,并附加一个新列。只要我可以在标题中添加一列,我并不真正关心当前数据表的外观。这似乎是一件相当基本的事情,但我似乎找不到任何人这样做的情况。例如:
"Name","Location","Phone"
"John Smith","Toronto","555.555.5555"
"Jane Doe","Dallas","555.555.5554"
我只想保留名称、位置和电话列名称,并将它们放入另一个带有一个额外列的 CSV。问题是,实际上,有更多的列并且它们并不总是相同的,因此脚本需要能够与列名无关。我应该能够为它提供具有任意数量的具有不同名称的列的任何 CSV,并且能够获得仅包含列名称的输出文件。我已经尝试了至少十几种不同的方法来做到这一点,并不断遇到不同的问题。
例子:
$validatedfilepath = "validfile.csv"
$csvData = New-Object PSObject
$csvData = Import-CSV "file.csv" | Add-Member @{ID="$null"} -PassThru
$csvdata = $csvdata | get-member -Name * -MemberType NoteProperty
$csvData = @($csvData.Name)
$csvData
这将在我的新有效文件中显示我想要的列名的确切列表,但我不知道如何将其作为列名导出到 CSV。每次我尝试执行 export-csv 时,它都会在新行中为每个或其他一些愚蠢的东西提供字符长度计数。
谢谢
【问题讨论】:
-
您想创建一个只有标题行的“空”CSV 文件?做什么的?在 Powershell 中,您通常只需将结构化数据导出到 CSV 文件中,Powershell 就会为您创建必要的标头。
-
我不明白你想做什么。您的输出 csv 应该是什么样的?
-
我现在才注意到您使用了 2 个不同的文件名。你这样做是有目的的吗?
-
@Olaf - 我实际上并没有尝试创建一个空的 csv 文件,但这就是我的目标。这似乎比尝试动态添加新列更合理。我需要获取相关列,添加 ID 列并添加值并输出到新文件。如果我至少可以让列名正确,那将使我更接近最终目标。
-
@TToni - 所以我展示的示例 CSV 数据,想象加上一列与正在修改的行相对应的数据。我不想碰原始文件。导入的 csv 文件可能没有新列的相应数据,因此我想将这些行分开到不同的文件中。
标签: powershell csv export-to-csv