`
任清宇
  • 浏览: 21568 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rails 如何将excel文件导入数据库

    博客分类:
  • ruby
阅读更多

     有一个小需求,需要一个脚本将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 

 

分享到:
评论

相关推荐

    rails和mysql数据库连接中出现的问题以及解决办法

    将该文件放在系统的PATH环境变量包含的任何目录下,或者将其放在Rails项目的根目录下,以便运行时能正确找到。 还有一种可能是MySQL服务未启动或配置不当。在命令行中,使用`net start mysql`(或相应服务名)检查...

    Rails中上传文件保存中文文件名乱码

    在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...

    Ruby on Rails安装及MySQL数据库配置指南

    解决方法是下载 libmySQL.dll 文件并将其放到 RUBY_HOME/bin/目录下。 四、开发体验 使用 Ruby on Rails 进行开发,可以体验到快速开发的优势。 Ruby on Rails 自动生成的代码也可以减少开发时间。Ruby on Rails ...

    Ruby on rails 数据库详细配置

    以下将详细介绍如何在Windows环境下安装Ruby on Rails以及配置数据库。 首先,我们需要安装Ruby环境。可以从RubyForge网站下载最新版本的Ruby One-Click Installer。在安装过程中,确保正确设置了安装路径,并且...

    to_xls-rails:将Rails ActiveRecord或Mongid数据导出到Excel文件

    这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...

    Ruby-Multiverse让Rails支持多数据库

    例如,`MULTIVERSE_DATABASE=secondary rails db:migrate`将会只对`secondary`数据库执行迁移。 此外,Multiverse还支持数据库路由,允许你在运行时动态切换数据库,这在处理临时的性能需求或者故障转移时非常有用...

    浅谈Ruby on Rails下的rake与数据库数据迁移操作

    本文将深入探讨Rails中的rake工具和数据库迁移的概念,以及如何正确地利用它们。 首先,Rails中的Migration是数据库结构变更的载体,它允许开发者通过编写代码来创建、修改或删除数据库表。每个Migration文件都包含...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    1. **Rakefile**:这是Rails项目中的任务脚本文件,包含了可执行的任务集合,如数据库迁移、测试运行等。 2. **README**:这个文件通常包含项目的简要介绍、安装指南和使用说明,是新用户理解项目用途和如何开始的...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    5. **运行迁移**:将Scaffold生成的数据库结构同步到MySQL: ```bash rake db:migrate ``` 6. **启动服务器**: ```bash ruby script/server ``` 7. **访问应用**:在浏览器中输入`...

    Ruby-SecondBase为Rails提供双数据库无缝相集成

    SecondBase是专门为Rails设计的一个数据库扩展工具,它扩展了ActiveRecord的功能,使得在Rails应用中处理两个或多个数据库变得轻而易举。ActiveRecord是Rails的核心组件之一,它负责数据库操作和模型之间的关系管理...

    《web开发敏捷之道 应用rails进行敏捷web开发》(第一版)的depot源代码

    7. **迁移**:Rails的迁移是数据库结构版本控制的一部分,允许开发者通过编写Ruby代码来修改数据库结构,并在多个环境中保持一致。 8. **Rake任务**:Rake是Ruby的构建工具,类似于Java的Ant或Python的setup.py,`...

    《Ruby On Rails》 源码 下载、导入、运行

    使用`rails db:migrate`命令来应用数据库迁移,这将创建或更新数据库表结构,确保与源码匹配。 6. **启动服务器**: 运行`rails server`或简写`rails s`,这将在你的本地开启一个Web服务器,你可以通过浏览器访问...

    PHP、Python、Ruby的(数据库、文件)比较(原创)

    本篇文章将深入探讨三种流行的脚本语言——PHP、Python和Ruby在处理数据库和文件操作方面的差异与特点,以帮助开发者更好地理解它们各自的优势。 首先,PHP(Hypertext Preprocessor)是一种广泛用于Web开发的语言...

    active_record_replica:将ActiveRecord(Rails)重定向到副本数据库,同时确保所有写操作都进入主数据库

    活动记录副本 重定向ActiveRecord(Rails)读取到副本数据库,同时确保所有写入都转到主数据库。 状态 ... active_record_replica确保默认情况下将数据库事务中执行的所有读取都定向到主数据库,以

    Rails、Sqlite的dll文件及安装

    这里,`database`路径指向SQLite数据库文件的位置。 6. **测试连接**: 创建新的Rails项目后,可以运行`rails db:create`命令来创建数据库,如果一切配置正确,应能成功创建。 7. **源码和工具**: 标签“源码 工具...

    rails-exporter-源码.rar

    3. Views:视图文件可能包含模板,用于定义导出文件的结构和样式,如 CSV 文件的列名或 Excel 文件的单元格样式。 4. Lib:Rails Exporter 的核心逻辑可能存在于 lib 目录下的文件,这些文件可能包含了导出的通用...

    导出数据库的所有数据成YML文件

    这个gem提供了一个命令行工具,能够将数据库中的数据导出为YML格式,或者从YML文件中导入数据到数据库。 2. **安装依赖**:如果你选择使用`yaml_db`,你需要先确保你的系统中已经安装了Ruby环境,并通过RubyGems来...

    Ruby+for+Rails

    `rails generate migration AddColumnToBooks column:type`会生成一个新的迁移文件,然后通过`rails db:migrate`执行迁移,更新数据库。 7. **路由(Routing)** Rails的路由系统将URL映射到控制器的动作上,定义...

    终于知道怎么把rails Web程序打包成可执行文件了

    在Ruby on Rails开发中,将Web程序打包成可执行文件是一项常见的需求,这可以使应用程序更加便携,方便在没有Rails环境的计算机上运行。这里,我们主要探讨如何将Rails应用转化为独立的可执行文件,结合提供的标题和...

Global site tag (gtag.js) - Google Analytics