LoginSignup
3
6

More than 5 years have passed since last update.

Railsでrakeタスクを使ってdbからcsvをローカルに保存

Last updated at Posted at 2019-01-31

みなさんエクセル好きですよね。。
CSVにして、ファイルを可視化したいって要望は多いんです。

そこで今回は、railsのrakeタスクの機能を使ってデータをcsvにしてくれる機能を実装していこうと思います。

Rakeタスクファイルを生成

rails g task create_csv

実行するのに必要なタスクファイルを生成します。

最初の状態はこれ

lib/tasks/create_csv.rake
namespace :create_csv do
end

タスク実行処理

lib/tasks/create_csv.rake

require 'csv'

namespace :create_csv do
  desc "実行処理の説明"
  #モデルにアクセスする場合は :enviroment を指定します
  task :export => :environment do
    #csvを生成
    csv_export = CSV.generate do |csv| 
      csv << Model.column_names
      csv << 
      Model.all.map do |model|
        model
      end
    end

    # 現在時間でダウンロードできるようにする
    current_time = DateTime.now.to_s
    # ファイル作成
    File.open("./" + current_time + "_user.csv", 'w') do |file|
      file.write(csv_export)
    end
    # ダウンロード
    stat = File::stat("./" + current_time + "_user.csv")
    send_file("./" + current_time + "_user.csv", :filename => "./" + current_time + "_user.csv", :length => stat.size)
end

ターミナルにて実行確認

rake create_csv:export

ファイルが生成していることを確認

Screenshot 2019-01-31 at 10.41.49.png

これでCSVファイルを生成できました!簡単ですね!
データを可視化してみたい時はぜひ!!

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6