背景 RailsでCSVを返す時、10万データくらいのものを普通に処理するとメモリを食い潰したり、処理が遅かったりする。 そこで解決策を探していたら、RustでRailsの代わりにCSVを作るという素晴らしい記事に出会った。 この記事はPostgresやNginxを使ってたが、私はMySQLを使っており、Railsのアプリケーション内で完結したかったので、参考にしながら試験的に作って見た。 お断り Railsをすでに理解していることを前提に進めます。 初心者の方へ環境構築周りを最後の方におまけとして書いておきますので参考にしてください。 筆者はRust初心者ですのでアドバイスを頂けるととても助かります。 環境 Ruby 2.3.3 Rust 1.14.0 Rails 5.0.1 Gemfileは基本デフォルト source 'https://rubygems.org' git_source
Let’s say that we have to import data from some social network. We will be provided with CSV file generated every 5 minutes containing list of posts that were added/liked/commented since the beginning of the day together with likes’ and comments’ counts for each post. As you can imagine the file will grow in size during the day; also we are looking at not only inserting new posts but also updating
You create a Mira project. A project is simply a home for one or more CSV files, along with a datapackage.json file. More on that now... You provide Mira with information about your CSV files by uploading a datapackage.json file to the project. This file provides metadata for the CSV files you plan to upload to the project. i.e. file names, columns names and types, delimiters etc. See here and her
Paperclipはは有名なファイルアップロード用のgemです。他にはCarrierWaveというものもあります。 この2つがRailsでのファイルアップロードgemとしてトップ2を争っています。 これらの違いは、 Paperclipは機能がシンプルで使いやすい CarrierWaveは機能がいろいろあり、応用が聞きやすい です。 Paperclipではアップロードしたファイルはサーバー上に配置されます。 実装結果 追加/編集画面でファイルをアップロードします。 すると。。。詳細画面にアップロードした画面が表示されます。 動作確認 Mac OS X 10.9 Ruby 2.0.0 Rails 4.1.4 Paperclip 4.2.0 目次 Railsプロジェクトの作成 PaperclipのRailsへの導入 Paperclipのアップロードファイルの保存先とValidation Pape
RubyでCSVファイルを処理するコードを書くときに、どのライブラリーを使えばいいのかいつも戸惑う。 今回も仕事でCSVファイルからデータを読み込んで、HTMLに出力するというちょっとしたスクリプトを書く必要があったのだが、またもや戸惑ってしまった。 これを機にどのような方法があるのか整理してみた。 CSVの取り扱いには、下記の3つの方法があるようだ。 通常のファイルとしてCSVを扱う Rubyに組み込まれているCSVライブラリーを利用する FasterCSVライブラリーを利用する 以下それぞれ詳しく説明していく。 1. 通常のファイルとしてCSVを取り扱う方法 ファイル入出力の関数を利用して、普通の方法でファイルを開き、一行ずつデータを読み込む方法である。 下記のサンプルはopenメソッドでファイルを開いた後、getsメソッドで一行ずつ読み取り、配列に格納している。なおgetsメソッドで
RailsでCSVやExcelをダウンロード(エクスポート)する方法を説明します。 Ransackなどで検索機能をつければ、検索結果に応じたCSV/Excel出力も可能です。 動作確認 Ruby 2.1 Rails 4.1 目次 Railsプロジェクトの作成 CSVのダウンロード機能の実装 Excelのダウンロード機能の実装 Railsプロジェクトの作成 まず、Raislのプロジェクトを作成します。 rails new csv_export_test cd csv_export_testそして、必要なコントローラー、ビュー、モデルを作成します。 製造者(Manufacture)と製品(Product)が1対Nの関係にします。 rails g controller Products index rails g model Manufacture name:string rails g mod
こんにちは!SQL 大好き kano-e です。 「データ更新のたびに新規にテーブルを作って、そこにデータを投入したい」とか。 「お客様を DB に登録したら、合わせてそのお客様専用のテーブルを作っておきたい」とか。 「とにかくこの CSV の内容を DB に投入したい、10万件」とか。 こんな状況、意外と遭遇していませんか? この記事では、そんな時に多分役立つ「Rails で動的にテーブルを作成して、大きな CSV のデータを PostgreSQL にインポートする方法」について、思いつくままにまとめてみました。 合わせて読みたい「動的に作成したテーブルを db/schema.rb に含めない方法」のおまけ付きです。 はじめに この記事では、以下の内容についてまとめています。 Rails で動的にテーブルを CREATE/DROP する テーブルに対応するモデルを用意せずに SQL を組
RailsでCSV/Excel/OpenOfficeのアップロード機能の実装方法について説明します。 動作確認 Ruby 2.1 Rails 4.1 Roo 1.13.2 目次 Railsプロジェクトの作成 CSVのインポート機能の実装 Excelのインポート機能の実装 1. Railsプロジェクトの作成まず、Raislのプロジェクトを作成します。 rails new csv_import_test cd csv_import_testそして、必要なコントローラー、ビュー、モデルを作成します。 rails g controller Products index rails g model Product name:string price:integer released_on:date rake db:migrate CSV出力するためのデータを作成します。 # db/seeds.rb
I'm using the ruby gem charlock_holmes in a Rails 4 app to detect the character encodings of CSV's that I'm parsing so that CSV.foreach doesn't throw an error. However, when I try to push to heroku (with gem 'charlock_holmes' in the Gemfile) I get the following error: Installing charlock_holmes (0.6.9.4) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /tmp/build_e
396: CSVとExcelのインポート (view original Railscast) Other translations: Written by Naomi Fujimoto エピソード362で、データベースのレコードをCSVやExcelファイルにエクスポートする方法を紹介しました。それ以来、レコードをインポートする方法も紹介してほしいという多くのリクエストを受けました。そこで今回はCSVとExcel形式のファイルからレコードをインポートする方法を紹介します。 方法としては、このページの一番下にフォームを追加し、レコードを含んだファイルをユーザにアップロードさせます。フォームが送信されると、ファイルが解析されてレコードがデータベースに追加されます。ビューテンプレートの最後にフォームを追加します。 /app/views/products/index.html.erb Impor
class CreateUsers < ActiveRecord::Migration! def change! create_table :users do |t|! t.string :first_name, null:false! t.string :last_name, null:false! t.string :email, null:false! t.timestamps! end! ! add_index :users, :email, unique: true! end! end 6TFST class Admin::UsersController < ApplicationController! def index! end! ! def upload! f = params[:data_file]! flash[:notice] = 'Upload successful
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く