2011-11-16 21 views
5

Đoạn mã sau hoạt động tốt cho tập tin CSV kích thước lớn hơn 10 K.Reading trong tệp CSV nhỏ hơn 10K từ S3 với Ruby 1.9.2 p290

lines = CSV.read(open(resource.csv(:original))) 

này được đọc các tập tin CSV lưu trữ trong Amazon S3 sử dụng đá quý Paperclip.

Nếu kích thước tập tin nhỏ hơn 10 K Tuy nhiên, tôi nhận được lỗi sau:

ActionView :: Template :: Lỗi (không thể chuyển đổi StringIO vào String):

Tôi googled và thấy bài viết sau đây:

http://adayinthepit.com/?p=269

Vì vậy, tôi cố gắng sử dụng đá quý fastercsv, khi tôi chạy chương trình của tôi một lần nữa, đây là lỗi mà tôi nhận được:

ActionView :: Mẫu :: Lỗi (Vui lòng chuyển sang thư viện CSV chuẩn của Ruby 1.9. Đó là FasterCSV plus hỗ trợ cho công cụ mã hóa m17n của Ruby 1.9.):

Có vẻ như đó là một Catch-22. Làm thế nào tôi có thể xử lý các tệp nhỏ hơn 10 K trong ruby ​​1.9.2 p290?

Vui lòng thông báo.

Cảm ơn.

Bharat

Trả lời

3

tôi sẽ đoán rằng CSV.read đã được trao một StringIO khi nó muốn một String. Nếu vậy, sau đó bạn sẽ có thể dính vào một cuộc gọi read tại và chuyển sang CSV.parse để làm cho tất cả mọi người hạnh phúc:

lines = CSV.parse(open(resource.csv(:original)).read) 
+0

Cảm ơn bạn. Công trinh. – Bharat

Các vấn đề liên quan