如何解析位于Amazon S3存储桶中的CSV文件
下面是我用来从应用程序中解析CVS的代码,但我想解析位于Amazon S3存储桶中的文件。 它也需要在推送到Heroku时工作。
namespace :csvimport do desc "Import CSV Data to Inventory." task :wiwt => :environment do require 'csv' csv_file_path = Rails.root.join('public', 'wiwt.csv.txt') CSV.foreach(csv_file_path) do |row| p = Wiwt.create!({ :user_id => row[0], :date_worn => row[1], :inventory_id => row[2], }) end end end
你可以这样做
CSV.new(open(path_to_s3)).each do |row| ... end
有S3的情况,当S3对象的权限不允许公共访问时。 内置的Ruby函数确实假设路径可公开访问,并且不考虑AWS S3特异性。
s3 = Aws::S3::Resource.new bucket = s3.bucket("bucket_name_here") str = bucket.object("file_path_here").get.body.string content = CSV.parse(str, col_sep: "\t", headers: true).map(&:to_h)
使用AWS开发工具包的每行说明:第1行。初始化第2行。选择存储桶。 第3行。选择一个对象并将其作为String。 第4行。有效地CSV.parse(’字符串’),但我还添加了一个选项并映射它以防万一它可以帮助你。
您可以从S3获取csv文件,如下所示:
require 'csv' require 'net/http' CSV.parse(Net::HTTP.get(s3_file_url), headers: true).each do |row| # code for processing row here end
- Carrierwave处理的图像未上传到AWS S3
- 使用Paperclip和Padrino
- 在rails中将对象上传到Amazon s3时添加Tag
- Ruby和Amazon S3如何打开文件并进行身份validation?
- 从AWS S3读取CSV文件时获取“Errno :: ENOENT:没有此类文件或目录@ rb_sysopen”
- Paperclip – 从Amazon S3删除文件?
- 使用Ruby将大文件上传到S3失败,出现内存不足错误,如何在块中读取和上载?
- Rails 4,Carrierwave-aws,图像在本地上传到amazon s3但未投放到生产中(Openshift)
- 使用Paperclip和IAM策略将文件上载到Amazon时拒绝访问