我遇到过从第三方收到csv文件的情况,其中一列包含其中的换行符。因此导致将csv文件上载到数据库时出现问题。
我正在使用SSIS包来解析csv文件。现在我想在SSIS使用它之前更正csv文件。
我更喜欢PowerShell脚本。
这个问题handling a CSV with line feed characters in a column in powershell 与我所看到的有一点区别非常相关..
我的数据采用这种格式(最后注意[LF]
而不是[CR][LF]
Column1,Column2,Column3,Column4
Text1,"Text2[LF]","text3[LF]",text4[LF]
修改
数据示例
Column1, Column2, Column 3[LF]
1, "text text", text[LF]
2, "text[LF]
Some more text [LF]
Some more text", text[LF]
3, "text again", text[LF]
这是实际文件https://www.dropbox.com/s/wsxfyehlnls7m53/test.csv
这可以实际纠正,还是不可能?
答案 0 :(得分:2)
试试这个:
(Get-content $file -Raw) -replace '\n(?=")','<br/>' |
set-content $file
这应该替换任何后面紧跟双引号的换行符。
或者,你可以这样做:
(Get-content $file -Raw) -replace '\n"','<br/>"' |
set-content $file
答案 1 :(得分:0)
这有点难看,但它对我有用并做你需要的。
首先,获取文件内容和列标题。
$text = Import-CSV $file
$columns = Get-Content $file -TotalCount 1
$columns = $columns.Split(",").Trim()
接下来循环遍历每个字段,并用<。
替换换行符For ($r=0; $r -lt $text.Count; $r++) {
For ($c=0; $c -lt $columns.Count; $c++) {
$text[$r].($columns[$c]) = $text[$r].($columns[$c]).Replace("`n","<br/>")
}
}
然后导出CSV
$text | Export-Csv $file -NoTypeInformation