0

编辑

我会得出结论,Import-Csv 对于格式不正确的 CSV 并不理想,并将使用 Get-Content 和拆分。感谢所有的答案。

示例 CSV:

"SessionID","ObjectName","DatabaseName",,,,,,,,
"144","","交流电"

最后使用Import-Csv的任何空字段都不会被计算在内 - 它只会在“DatabaseName”之后停止。

有什么办法可以包含空字段?

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

4

2 回答 2

1

看起来它缺少标题。如果你要添加一些,它会工作得很好。

你可以做类似的事情

Get-Content My.CSV | Select -skip 1 | ConvertFrom-Csv -Header "SessionID","ObjectName","DatabaseName",'Whatnot1', 'Whatnot2', 'Whatnot3'
于 2017-01-06T12:36:16.443 回答
0

正如 dbso 建议的 split 和 Length 会帮助你。我正在编写一个现在已经过时的标头例程。尽管如此,它是:

$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"
于 2017-01-06T13:30:30.503 回答