我有一些文件需要导入到数据库中。文件大小为 30-40MB。 CSV 文件的分隔符是制表符。 例如:
标题1 | 标题2 | 标题3 |
---|---|---|
1 | 兰德名称 | 5674 |
2 | 他的名字 | 663452 |
3 | “她的名字 | 1423254 |
4 | 其他名称 | 876 |
5 | 我不知道 | 234 |
6 | “”“为什么要使用它 | 2342 |
我试过这个:
$Import_file = Import-Csv "$($FileSource)" -Encoding Default -Delimiter "`t" -Header "Header1","Header2","Header3"
#Connection and table definition part
try {
$Import_file | ForEach-Object {
$row = $Import_Table.NewRow()
$row.FIELD1 = [string]($_.Header1)
$row.FIELD2 = [string]($_.Header2)
$row.FIELD3 = [string]($_.Header3)
$Import_Table.Rows.Add($row)
}
}
问题出在引号上。它用作文本限定符。 第三行第二个字段的内容将是:“她的名字 1423254 4 其他名字 876 5 我不知道 234”
它不会保留引号。我怎样才能逃脱并保持队列?难道就不会放弃表演吗?
环境是Powershell 5.1 .
没有找到任何类型的参数来管理它。 尝试拆分行,但我担心性能会下降。
如果可能,您应该尝试更改 CSV 的制作方式。
同时,虽然我打赌有一个补丁,但有无限更有效的方法来处理它:
$Import_File = Get-Content -Path .\res.csv |
ForEach-Object Replace '"' , '\"' |
ConvertFrom-Csv -Delimiter "`t" |
ForEach-Object {
$temp = [pscustomobject]::new()
foreach ($Header in $_.psobject.properties.name) {
Add-Member -InputObject $temp -MemberType NoteProperty `
-Name $Header -Value ($_.$Header -replace '\\"', '"')
}
$temp
}