gpt4 book ai didi

csv - 在不加载整个文件的情况下,检测使用PowerShell v3第一次遇到换行符

转载 作者:行者123 更新时间:2023-12-03 01:12:10 28 4
gpt4 key购买 nike

为了正确地将大约10MB〜80k行CSV文件加载到MySQL,我需要在LOAD DATA INFILE查询中提供适当的行终止符。不幸的是,源CSV文件有两种形式:换行符为LF(在Linux上为mysqldump)或CRLF(我们的DBA团队精心设计)。

我一直在寻找一种读取文件的方法,直到遇到换行符,然后通过检查回车符是否在行末尾来弄清楚使用哪个行尾。

有很多基于Get-Content的示例可以读取整个文件,也可以读取文件的最后两个字节。第一个太慢且效率低下,第二个不够可靠,因为某些文件由于某种原因最后没有CRLF

考虑到以上几点,读取文件直到击中LF似乎更合理,但是我无法使Get-Content来“流式处理”文件,而且我不知道第一行的结尾有多远。

非常感谢您的想法。

最佳答案

Get-Content 不能做您想要的事情,因为它要么将单个文件(-Raw)读取为整个文件,要么将其读取为一行,同时从行尾删除CR和LF。

StreamReader 可以满足您的要求:

$file = 'C:\path\to\your.file'

$reader = [IO.File]::OpenText($file)
$prev = $null
$char = $null
while ($reader.Peek() -ge 0 -and $char -ne 10) {
$prev = $char
$char = $reader.Read()
}
$reader.Close()
$reader.Dispose()

if ($prev -eq 13) {
# file has CR-LF line breaks
}

关于csv - 在不加载整个文件的情况下,检测使用PowerShell v3第一次遇到换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37831224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com