ruby - 如何在不先保存文本文件并用它提供 CSV 的情况下在 Ruby 中获取 FTP 记录

标签 ruby csv ftp

我已经使用 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/

相关文章:

ruby-on-rails - FactoryGirl initialize_with 多个参数

c# - FileHelpers 嵌套引号和逗号 - 解析错误

javascript - Gulp - 通过 ftp 上传文件后通知

ruby-on-rails - 在部署我的 Rails 应用程序之前,我应该检查哪些安全措施?

ruby-on-rails - 参数错误 : assertion message must be String or Proc using assert_select

javascript - 用 rails 配置 Angular 材

Python 3 - CSV 阅读器到达文件末尾后,CSV 编写器循环不会关闭

python - 如何使用 python 从我的 CSV 中捕获打印数据

ruby-on-rails - 使用Passenger 部署rails 应用程序的最快方法

ruby - 使用 Ruby FTPS 进行加密传输