2017-09-01 70 views
0

我有一个包含多个表的CSV文件,例如:解析CSV多个表

##List 1## 
ID,Username,Department 
1,John,HR 
2,Barbara,Finance 
3,Jane,IT 

##List 2## 
ID,Username,CostCentre 
1,Alex,3241 
2,Jamie,3342 
3,James,1234 
4,Sarah,5536 

有一种简单的方法来获得PowerShell来识别为两个表?我目前正在读行由行和使用

if($row -Like "*List*") 

(以及一些其他逻辑),以确定该行的性质,然后将它写出来的两个文本文件中的一个,然后导入这些和再次重复。

但是有没有更高效的方法?

回答

1

这并没有完全解决,我相信有人会想出更优雅的东西,但它被分解成步骤,所以它可能有助于解释一些PowerShell技术。

[email protected]" 
##List 1## 
ID,Username,Department 
1,John,HR 
2,Barbara,Finance 
3,Jane,IT 

##List 2## 
ID,Username,CostCentre 
1,Alex,3241 
2,Jamie,3342 
3,James,1234 
4,Sarah,5536 
"@ 

# break into individual lines 
$s2 = ($s -split "`r`n") 

# strip out blank lines 
$s3 = $s2 | ? { $_ -ne "" } 

# re-assemble into text blob 
$s4 = $s3 -join "`r`n" 

# split at tokens and skip the first, blank record 
$s5 = $s4 -split "##List \d+##" | Select-Object -Skip 1 

# remove blanks 
$s6 = $s5 | ? { $_ -ne "" } 

$s6 | % { 

    # break into array of lines 
    $s7 = $_ -split "`r`n" 

    # remove blank lines 
    $s8 = $s7 | ? { $_ -ne "" } 

    $s8 | ConvertFrom-Csv 

}