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ẽ @[email protected] 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 ...
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ẽ @[email protected]
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 @[email protected]
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