如何在Rails中使用delay_job将文件读取(导入)到数据库

bav ko十

我有一个要导入import_jobs.rb的类

require 'roo'
class ImportJob < Struct.new(:path, :name)
  def perform
    import(path, name)
  end
  #
  def import(path, name)
    spreadsheet = open_spreadsheet(path, name)
    header = spreadsheet.row(1).map!(&:downcase)

    (2..spreadsheet.last_row).each do |i|
      row = Hash[[header, spreadsheet.row(i)].transpose].to_hash     
      potential_user = PotentialUser.find_by_id(row[:id]) || PotentialUser.new
      potential_user.attributes = row
      potential_user.save!
    end
  end
  #
  def open_spreadsheet(path,extname)
    case extname
    when ".csv" then Roo::CSV.new(path)
    when ".xls" then Roo::Excel.new(path)
    when ".xlsx" then Roo::Excelx.new(path,file_warning: :ignore)
    else raise "Unknown file type: extname"
    end
  end
end

在我看来

<%= form_tag import_potential_users_path, multipart: true do %>
  <%= file_field_tag :file %>
  <%= submit_tag "Import" %>
<% end %>

在控制器中

def import
  if params[:file].present?
    Delayed::Job.enqueue ImportJob.new(params[:file].path, File.extname(params[:file].original_filename))
  redirect_to potential_users_path, notice: "Protential Users imported."
  else
    redirect_to potential_users_path
  end
end

在运行作业时,显示错误不会退出file。虽然我运行时不使用delay_job,但代码有效

[Worker(host:ubuntu pid:14362)] Job ImportJob (id=860) RUNNING
[Worker(host:ubuntu pid:14362)] Job ImportJob (id=860) COMPLETED after 2.0222
[Worker(host:ubuntu pid:14362)] Job ImportJob (id=858) RUNNING
[Worker(host:ubuntu pid:14362)] Job ImportJob (id=858) FAILED (3 prior attempts) with IOError: file /tmp/RackMultipart20151211-14238-13b7xb does not exist
[Worker(host:ubuntu pid:14362)] 2 jobs processed at 0.7092 j/s, 1 failed
快速向导

看起来临时文件是在工作者开始处理作业之前被删除的。建议您将文件复制到另一个位置,然后重试。以下代码可能会有所帮助:

if params[:file].present?
  original_filename = params[:file].original_filename
  new_filename = "#{File.basename(original_filename)}_new"
  new_filepath = File.join(Dir.tmpdir, new_filename)
  FileUtils.cp(params[:file].path, new_filepath)
  import_job = ImportJob.new(new_filepath, File.extname(original_filename))
  DelayedJob.enqueue(import_job)
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails –如何将文件从本地主机导入到Heroku数据库

来自分类Dev

如何从PHP将Excel文件导入mysql数据库

来自分类Dev

使用Hibernate将CSV文件导入到MySQL数据库

来自分类Dev

如何在Hibernate中使用属性文件读取数据库配置参数

来自分类Dev

如何将JSON文件导入Django数据库?

来自分类Dev

如何在没有phpMyAdmin的情况下将SQL文件导入MySQL数据库

来自分类Dev

如何在不使用SAS的情况下将SAS7BDAT数据库导入到Stata

来自分类Dev

使用VB.Net将CSV文件导入到Access数据库

来自分类Dev

如何在ActiveJob中使用自定义的delay_job作业?

来自分类Dev

如何将yml文件导入MySQL数据库?

来自分类Dev

使用Java将CSV文件导入到Oracle数据库

来自分类Dev

如何在Laravel中使用Ajax调用将数据发布到数据库?

来自分类Dev

如何在Rails中使用delay_job将文件读取(导入)到数据库

来自分类Dev

如何将bak文件导入Azure数据库

来自分类Dev

如何将备份文件大量导入到Postgresql数据库

来自分类Dev

如何将数据从txt文件导入到MySQL数据库

来自分类Dev

使用R将多个csv文件导入到postgresql数据库中(内存错误)

来自分类Dev

Rails –如何将文件从本地主机导入到Heroku数据库

来自分类Dev

导入.DAT文件到数据库?

来自分类Dev

如何在python中使用PyMYSQL将数据存储到数据库

来自分类Dev

如何在另一个ubuntu安装中使用单个文件导入多个postgres数据库

来自分类Dev

如何在Rails中将数据存储到数据库

来自分类Dev

如何将 .json 文件导入 Firebase 数据库?

来自分类Dev

如何将一张excel文件导入到access数据库中?

来自分类Dev

使用 XSLT 将 XML 导入文件格式化到数据库

来自分类Dev

如何将JSON文件导入数据库

来自分类Dev

将 SQL 文件导入 Rails 数据库

来自分类Dev

如何在 Ruby On Rails 中读取数据库结果

来自分类Dev

如何在 Laravel 5.7 中使用 Cron Job 将经纬度从邮政编码更新到数据库

Related 相关文章

  1. 1

    Rails –如何将文件从本地主机导入到Heroku数据库

  2. 2

    如何从PHP将Excel文件导入mysql数据库

  3. 3

    使用Hibernate将CSV文件导入到MySQL数据库

  4. 4

    如何在Hibernate中使用属性文件读取数据库配置参数

  5. 5

    如何将JSON文件导入Django数据库?

  6. 6

    如何在没有phpMyAdmin的情况下将SQL文件导入MySQL数据库

  7. 7

    如何在不使用SAS的情况下将SAS7BDAT数据库导入到Stata

  8. 8

    使用VB.Net将CSV文件导入到Access数据库

  9. 9

    如何在ActiveJob中使用自定义的delay_job作业?

  10. 10

    如何将yml文件导入MySQL数据库?

  11. 11

    使用Java将CSV文件导入到Oracle数据库

  12. 12

    如何在Laravel中使用Ajax调用将数据发布到数据库?

  13. 13

    如何在Rails中使用delay_job将文件读取(导入)到数据库

  14. 14

    如何将bak文件导入Azure数据库

  15. 15

    如何将备份文件大量导入到Postgresql数据库

  16. 16

    如何将数据从txt文件导入到MySQL数据库

  17. 17

    使用R将多个csv文件导入到postgresql数据库中(内存错误)

  18. 18

    Rails –如何将文件从本地主机导入到Heroku数据库

  19. 19

    导入.DAT文件到数据库?

  20. 20

    如何在python中使用PyMYSQL将数据存储到数据库

  21. 21

    如何在另一个ubuntu安装中使用单个文件导入多个postgres数据库

  22. 22

    如何在Rails中将数据存储到数据库

  23. 23

    如何将 .json 文件导入 Firebase 数据库?

  24. 24

    如何将一张excel文件导入到access数据库中?

  25. 25

    使用 XSLT 将 XML 导入文件格式化到数据库

  26. 26

    如何将JSON文件导入数据库

  27. 27

    将 SQL 文件导入 Rails 数据库

  28. 28

    如何在 Ruby On Rails 中读取数据库结果

  29. 29

    如何在 Laravel 5.7 中使用 Cron Job 将经纬度从邮政编码更新到数据库

热门标签

归档