Cách lấy data từ file csv

Mấy hôm nay vật vả ngồi tạo file excel rồi save lại dưới dạng .csv đọc dữ liệu rồi tạo table... mỏi cả mắt luôn ý chứ. Nên bây giờ có thêm một bài viết để chia sẽ @_@

Tạo rails app

Để tạo rails app có tên là airport bạn sử dụng lệnh sau:

rails new airports

File CSV

Đặt file .csv vào folder airport/public

Ví dụ: Mình có 1 file csv tên là airport_codes.csv thì thư mục của mình sẽ là airport/public/airport_codes.csv

Đọc file CSV

Để đọc file CSV này thì mình sẽ viết 1 rake task để thực hiện việc lướt qua từng row của nó.

Thực hiện

Bước 1: Tạo 1 model có tên là airport_code gồm có 3 thuộc tính là: city, country, airport_code

rails g model airport_code city:string country:string airport_code:string
rails rake:migrate

Bước 2: Tạo 1 task.

# create  lib/tasks/import.rake
rails g task import airport 

Bươc 3: Viết gì cho task import airport đây:

require 'csv'
namespace :import do
  desc "Get airport code from csv file"
  task airport: :environment do
    # get pwd airport_codes.csv
    airport_code_file = Rails.root + "public/airport_codes.csv"

    CSV.foreach(airport_code_file, headers: true) do |row|
      # Each row like a array. We will get value by this way:
      # row[0] => id
      # row[1] => city
      # row[2] => country
      # row[3] => airport_code

      AirportCode.create!(city: row[1], country: row[2], airport_code: row[3])
    end
  end

end

Run những gì đã viết ở bước 3:

rake import:airport

Kiểm tra lại data mình đã đọc từ file CSV và lưu vào trong database của mình:

1)

rails c

2

AirportCode.all

Yah!!! đã xong rồi đấy. Khá là đơn giản phải hok nào @_@

Tìm hiểu thêm tại:

  • CSV của Ruby:

http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html

  • Xem code tại đây:

https://github.com/mymai91/read-csv

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

My Mai

33 bài viết.
164 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
21 8
Lotus là gì? (Link) là một Ruby Web Framework mới với chú trọng vào cấu trúc tách rời với thiết kế đơn giản và dễ hiểu. Hiện tại thì Lotus vừa re...
My Mai viết gần 3 năm trước
21 8
White
18 21
Bạn muốn load 3 image khác nhau (Ý mình ở đây là dùng tag không phải background nhé) cho 3 loại màn hình khác nhau (small, medium, large). Bạn sẽ l...
My Mai viết gần 3 năm trước
18 21
White
18 7
Tham gia cộng đồng Thoáng đó cũng đã 2 năm từ lúc tớ tham gia cộng đồng Ruby Việt Nam. Giờ ngồi ngẫm lại được gì và mất gì :v Thật thì chẳng mất...
My Mai viết hơn 1 năm trước
18 7
Bài viết liên quan
White
8 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết hơn 2 năm trước
8 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
33 bài viết.
164 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!