Import-Csv在行尾包含空字段

时间:2017-01-06 12:33:17

标签: powershell import-csv

修改

我将得出结论,Import-Csv不适用于格式不正确的CSV,并将使用Get-Content和split。谢谢你的所有答案。

示例CSV:

"SessionID","ObjectName","DatabaseName",,,,,,,,
"144","","AC"

使用Import-Csv将计算最后的空字段 - 它将在“DatabaseName”之后停止。

有没有办法包括空字段?

修改 我只需要计算字段并确保它们的数量少于X。它不仅包含可能包含空字段的标题,还包含内容。这些文件通常是手动制作的,格式不正确。由于文件也可能变得非常大,我宁愿不使用Get-Content并拆分,因为我已经在使用Import-Csv及其属性。

2 个答案:

答案 0 :(得分:1)

看起来它缺少标题。如果你想添加一些,它会工作正常。

您可以执行类似

的操作
Get-Content My.CSV | Select -skip 1 | ConvertFrom-Csv -Header "SessionID","ObjectName","DatabaseName",'Whatnot1', 'Whatnot2', 'Whatnot3'

答案 1 :(得分:0)

正如dbso建议拆分和长度会帮助你。我正在编写一个现在已经过时的头部例程。不过在这里它是:

$FileIn = "Q:\test\2017-01\06\SO_41505840.csv"
$Header= (Get-Content $FileIn|select -first 1)-split(",")
"Fieldcount for $FileIn is $($Header.Length)"
for($i=0; $i -lt $Header.Length; $i++){if ($Header[$i] -eq ""){$Header[$i]="`"Column$($i+1)`""}}
$Header -Join(",")

返回此输出

Fieldcount for Q:\test\2017-01\06\SO_41505840.csv is 11
"SessionID","ObjectName","DatabaseName","Column4","Column5","Column6","Column7","Column8","Column9","Column10","Column11"