PowerShell ConvertFrom-Csv
最后修改:2025 年 2 月 15 日
在本文中,我们将介绍PowerShell中的ConvertFrom-Csv
cmdlet。这个cmdlet将逗号分隔值(CSV)数据转换为对象。
CSV基础知识
CSV是一种用于存储表格数据的简单文件格式。每一行代表一条记录,字段之间用逗号分隔。PowerShell可以通过各种cmdlet处理CSV数据。ConvertFrom-Csv
cmdlet对于处理CSV字符串或文件至关重要。
ConvertFrom-Csv基本用法
使用ConvertFrom-Csv
最简单的方法是使用CSV字符串。第一行应包含标题(属性名)。后续的每一行都成为具有这些属性的对象。输出是一个对象集合。
$csvData = @" Name,Age,Occupation John,32,Engineer Sarah,28,Designer Michael,45,Manager "@ $objects = $csvData | ConvertFrom-Csv $objects
此命令将CSV字符串转换为对象。每个对象都具有Name、Age和Occupation属性。输出以表格形式显示对象。
处理自定义分隔符
默认情况下,ConvertFrom-Csv
使用逗号作为分隔符。您可以使用-Delimiter参数指定不同的分隔符。这对于使用制表符、分号或其他分隔符的文件很有用。分隔符必须与数据中的实际分隔符匹配。
$csvData = @" Name;Age;Occupation John;32;Engineer Sarah;28;Designer Michael;45;Manager "@ $objects = $csvData | ConvertFrom-Csv -Delimiter ';' $objects
此命令处理带有分号分隔符的CSV数据。输出与逗号分隔数据相同,但解析正确。-Delimiter参数确保字段分隔正确。
从文件转换CSV
您可以将Get-Content
与ConvertFrom-Csv
结合使用来处理CSV文件。首先读取文件内容,然后将其转换为对象。这种方法在处理外部数据文件时很常见。文件必须具有正确的CSV格式。
$fileContent = Get-Content -Path "C:\data\employees.csv" $objects = $fileContent | ConvertFrom-Csv $objects | Format-Table -AutoSize
此命令读取CSV文件并将其转换为对象。Format-Table cmdlet确保输出清晰。调整文件路径以匹配您的系统。
处理标题
如果您的CSV缺少标题,您可以使用-Header参数指定它们。提供一个列名数组作为属性名。这对于没有标题行的文件很有用。标题将应用于所有后续行。
$csvData = @" John,32,Engineer Sarah,28,Designer Michael,45,Manager "@ $headers = "Name","Age","Occupation" $objects = $csvData | ConvertFrom-Csv -Header $headers $objects
此命令为无标题的CSV数据添加标题。每个对象将具有指定的属性名。标题数组必须与列数匹配。
处理不同编码的CSV
处理CSV文件时,可能会出现编码问题。使用Get-Content的-Encoding参数指定正确的编码。常见的编码包括UTF8、ASCII和Unicode。这确保特殊字符能够正确读取。
$fileContent = Get-Content -Path "C:\data\employees.csv" -Encoding UTF8 $objects = $fileContent | ConvertFrom-Csv $objects
此命令读取UTF8编码的CSV文件。-Encoding参数确保字符被正确解释。根据需要调整您的特定文件的编码类型。
过滤转换后的CSV数据
将CSV转换为对象后,您可以像处理任何PowerShell对象一样过滤它们。使用Where-Object选择特定的记录。这允许在PowerShell中直接进行强大的数据操作。筛选条件可以使用任何对象属性。
$csvData = @" Name,Age,Occupation John,32,Engineer Sarah,28,Designer Michael,45,Manager "@ $objects = $csvData | ConvertFrom-Csv $engineers = $objects | Where-Object { $_.Occupation -eq "Engineer" } $engineers
此命令仅过滤Engineer职业。Where-Object cmdlet检查每个对象的Occupation属性。仅返回匹配的对象。
导出转换后的CSV数据
处理完CSV数据后,您可能希望导出它。使用Export-Csv将对象保存回CSV格式。这将创建一个包含当前数据的新CSV文件。您可以指定分隔符并包含/排除标题。
$csvData = @" Name,Age,Occupation John,32,Engineer Sarah,28,Designer Michael,45,Manager "@ $objects = $csvData | ConvertFrom-Csv $objects | Export-Csv -Path "C:\data\processed.csv" -NoTypeInformation
此命令将处理后的数据保存到新的CSV文件中。-NoTypeInformation参数会移除额外的类型元数据。输出文件将包含修改后的CSV格式数据。
来源
在本文中,我们介绍了PowerShell中的ConvertFrom-Csv cmdlet。
作者
列出 所有 PowerShell 教程。