railsはexcelファイルをデータベースにインポートする方法

1274 ワード

詳細
スクリプトが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 v 5_8_5:a_change_offer_preferred
データ移行は可能ですが、実際にはlogを付けたり、フォールトトレランスを更新したりして、異常レベル制をキャプチャしたほうが完璧です.どのようにこのgemはとても使いやすいかどうか、公式のドキュメントの上でcsvなどの多くの方法を導入することがあります
リンクを添付https://github.com/roo-rb/roo