是否可以将哈希表中的整个CSV文件数据作为标题存储为标题,将各个值存储为值对?
我希望这用于在SQL表中推送正确的数据。
示例csv文件:
id,fname,lname,shift,day,night
1,ert,sdf,08/21/2017 Day,2,-
2,wer,asdf,08/21/2017 Day,-,1
3,rty,adsf,08/21/2017 Day,1,-
4,yui,adsf,08/21/2017 Day,-,-
5,qwe,asdf,08/21/2017 Day,-,-
6,ret,asdf,08/21/2017 Day,-,-
7,chh,asdf,08/21/2017 Day,-,-
8,sdf,cxvv,08/21/2017 Day,1,-
我想访问值,所以我可以遍历键,例如:
id => 1
fname => ert
lname => sdf
shift => 08/21/2017 Day
day => 2
night => -
id => 2
fname => wer
lname => asdf
shift => 08/21/2017 Day
day => -
night => 1
...
So on
答案 0 :(得分:2)
您是否尝试过Import-Csv
Cmdlet
> $csvData=Import-Csv example.csv
> $csvData[0]
id : 1
fname : ert
lname : sdf
shift : 08/21/2017 Day
day : 2
night : -
> $csvData[0].shift
08/21/2017 Day
> $csvData.length
8
所以有效密钥是0..7
编辑:循环键
$keys = $csvData[0].psobject.properties | % { ,@( $_.name ) }
$csvData[0].($keys[0])
或
$keys | %{ echo "$_ => $($csvData[0].$_)" }
和
0..7 |%{ $i=$_; $keys |%{ echo "$i,$_ => $($csvData[$i].$_)" } }
答案 1 :(得分:1)
根据Nahuel的回答,循环浏览项目的键如下:
$csvData = Import-CSV data.csv
foreach ($element in $csvData) {
Write-Host "Element:"
$element.Keys | ForEach-Object {Write-Host "`t$($_) => $($element[$_])"}
}