我已经使用 gettextfile 方法从 ftp 服务器获取记录,并处理给定 block 中的每条记录,最终将其放在其他地方。
这个文件是一个 CSV 文件,我需要用 CSV 处理它以获取标题和数据,并在一些工作后将其放在数据库中。因为我有很多不同的文件,所以我需要一种通用的方式。 我不想加载内存或磁盘上的所有记录,因为文件可能非常大! 所以流会很好
一个想法是给 CSV 一个 io 对象,但我不知道如何用 Net::FTP 做到这一点。
我已经看到“http://stackoverflow.com/questions/5223763/how-to-ftp-in-ruby-without-first-saving-the-text-file”,但它适用于 PUT。
有什么帮助吗?
最佳答案
Justin 提到的技术创建了一个 temporary file .
你可以使用 retrlines :
filedata = ''
ftp.retrlines("RETR " + filename) do |block|
filedata << block
end
或retrbinary相反:
filedata = ''
ftp.retrbinary("RETR " + filename, Net::FTP::DEFAULT_BLOCKSIZE) do |block|
filedata << block
end
关于ruby - 如何在不先保存文本文件并用它提供 CSV 的情况下在 Ruby 中获取 FTP 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13444298/