ruby-on-rails - 打开包含要在 rake 任务中使用的 csv 文件的 zip 文件

标签 ruby-on-rails ruby csv

我有一个看起来像这样的 rake 任务

require 'open-uri'
require 'csv'
namespace :Table do
   task reload: :environment do
       ActiveRecord::Base.connection.execute("TRUNCATE Table RESTART IDENTITY")
       csv_text = open('URL')
       csv = CSV.parse(csv_text, :headers=>true)
       csv.each do |row|
         Table.create(table columns)
       end
   end
end

现在我可以让文件以 gzip 或 zip 格式返回。它必须被压缩,但是 csv 是 zip 文件中的唯一文件。

有什么办法可以打开 zip 文件中的 csv 文件吗?

感谢帮助

山姆

最佳答案

Ruby 核心包括 Zlib 支持。如果你有一个指向压缩文件的 URL,你可以使用 Zlib::GzipReader膨胀 open 返回的 Tempfile

gzipped = open('URL')
csv_text = Zlib::GzipReader.new(gzipped).read
csv = CSV.parse(csv_text, :headers=>true)

关于ruby-on-rails - 打开包含要在 rake 任务中使用的 csv 文件的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34815359/

相关文章:

ruby-on-rails - 在Rails中对分配使用救援

ruby-on-rails - 如何使用 rails 整理 CSS 字符串?

ruby - 尽管安装了 gem 但找不到 gem

powershell - Import-Csv以获取包含破折号的数据给框或问号

java - csv输出错误

mysql - rails : Selecting user comments for the last day

ruby-on-rails - 信用系统 : history based or balance based?

ruby 菜鸟?创建 ruby 日期

ruby-on-rails - 在 Rails 中验证参数

python-3.x - 从 Google Cloud Storage 中的 csv 读取 n 行以与 Python csv 模块一起使用