rails 如何将excel文件导入数据库 博客分类: ruby ruby
程序员文章站
2024-02-26 15:00:58
...
有一个小需求,需要一个脚本将excel文件导入数据库对应字段。
正好可以练习一下task,不过首先先查查有没有什么好gem可以利用下(原谅我这么懒)
找到一个'roo' 回到gemfile中发现项目中已经包含了这个gem,恩看样子大家都在用,查看了一下用法还是很简单,非常好用。
# excel gem 'roo', '~> 2.3.2', require: false在 gemfile中添加上这个gem
然后创建一个新的rake任务,就可以开始我们的小任务了
namespace :v5_8_5 do task a_change_offer_preferred: :environment do require 'roo' file = "#{Rails.root}/tmp/preferred_offers.xlsx" # 将文本路径赋给对象 if File.exists?(file) # 打开文本赋值给xlsx对象,将文本第一列赋值给对象sheet xlsx = Roo::Spreadsheet.open(file, extension: :xlsx) sheet = xlsx.sheet(0) # 这里将读取出来的数据更新到数据表中 sheet.each do |row| offer = Offer.find_by(id: row[0]) offer.update_columns(description: row[2], position: row[3]) end end end end
执行 rake v5_8_5:a_change_offer_preferred
就可以进行数据迁移了,当然实际中最好加上log,以及更新容错,捕获异常等级制才显得更加完善。
怎么样 这个gem是不是很好用,官方文档上还有导入csv 等等很多的方法附上链接 https://github.com/roo-rb/roo
上一篇: INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 0 time(s); retry p
推荐阅读
-
rails 如何将excel文件导入数据库 博客分类: ruby ruby
-
Rails里给文件上传添加progress_bar 博客分类: Ruby RailsUIF#HTML
-
终于知道怎么把rails Web程序打包成可执行文件了 博客分类: Ruby on Rails RailsWebSQLiteGmailIDEA
-
用数据库sqlite3, rails加快测试 博客分类: Ruby on Rails RailsActiveRecordRubySQLiteUP
-
使用sqllite3作为Rails的数据库 博客分类: Rails and Ruby RailsSQLiteRubyMySQL单元测试