**更新:**感谢Keith-Miller在下面的建议,我能够使用StreamReader.ReadBlock()
提取一个字符块,然后使用String.LastIndexOf()
在该字符串中搜索最后一个行分隔符。幸运的是,在本例中,行分隔符是r`n`,而单元格中的换行符只有
r`。由于another issue,我还没有找到该文件的最终解决方案,但一旦找到它,我将提供另一个更新!
原帖子:
假设我有一个如下所示的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 3的记录,如何导入ID 1和2的记录?
Get-Content -Head
需要知道每行中有多少个换行符。StreamReader
将返回类似to eat
的行,同样需要了解每行中的换行符。- 从文件中去除换行符也会从行尾去除换行符,从而生成一行多列的表格。
对于其他上下文,我尝试分块导入此CSV *,因为 * 它太大了,因此如果有逐行读取(甚至一次多行)的解决方案,我将非常感激。与“导入巨大的CSV,然后取出所需的行”相反。
1条答案
按热度按时间gupuwyp21#
对于其他上下文,我尝试分块导入这个CSV,因为它太大了,所以如果有一个逐行读取(甚至一次多行)的解决方案,我会非常感激。
Import-Csv
* 已经像这样工作了 * --它将读取头(如果相关),然后开始逐行输出记录--它实际上不会等到整个文件导入后才吐出行数据。因此,要获取前10行,只需执行以下操作:
Select-Object
将在收到前10个输入对象后立即中断Import-Csv
,其余CSV行将保持“未读”状态