如何在PowerShell中导入含单元格换行的大CSV指定部分?
大CSV文件分块读取筛选:仅导入指定ID的记录
问题场景
我有一个包含多行单元格的大CSV文件,内容如下:
| ID | Message |
|---|---|
| 1 | Buy milk |
| 2 | Don't forget to eat candy |
| 3 | Also pizza |
对应的文本存储格式为:
ID,Message 1,"Buy milk" 2,"Don't forget to eat candy" 3,"Also pizza"
我需要仅导入ID为1和2的记录,排除ID为3的记录,但由于文件体积过大,必须采用逐行或分块批量读取的方案,不能先加载整个文件再做筛选。
已尝试的方法及遇到的问题
- 使用
Get-Content -Head:需要提前知道目标记录包含多少换行符,无法灵活处理。 - 使用
StreamReader:会把单元格内的换行(比如to eat)当成单独行返回,无法正确识别完整的单条记录。 - 移除文件中所有换行符:会同时删除行尾的分隔换行,导致整个文件变成单行多列的错误结构。
更新:当前进展
感谢Keith-Miller的建议,我现在用StreamReader.ReadBlock()读取字符块,再通过String.LastIndexOf()定位完整记录的行分隔符\r\n。刚好本次场景里,单元格内的换行只有\r,和行分隔符能明确区分开。不过目前还有其他问题没解决,找到最终方案后会再来更新!
内容的提问来源于stack exchange,提问作者Inflorescence
相关产品推荐
相关产品推荐

