Successfully reported this slideshow.
Your SlideShare is downloading. ×

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

CSV

  1. 1. CSVCSV とちぎRuby会議07 2017-08-26 とみたまさひろ 1
  2. 2. Ruby歴 約20年 (本日の老害枠の一人) 得意分野: 文字化け Software Design 2016年12月号 「Rubyと文字コード」/「MySQLと文字コード」 Software Design 2017年7月号 「MySQL[SELECT文]集中講座」 今日は長野から5時間かけてきました (思ってたより近かった) 2
  3. 3. その昔RubyのCSVは遅かった 3
  4. 4. みんな大好き KEN_ALL.CSV % ruby -v -rcsv -e 'CSV.foreach("KEN_ALL.CSV"){}' ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] real 0m33.732s user 0m33.712s sys 0m0.016s 4
  5. 5. LightCsvってのを作ったんですよ 速い! % ruby -v -rlightcsv -e 'LightCsv.foreach("KEN_ALL.CSV"){}' ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] real 0m3.336s user 0m3.312s sys 0m0.020s 5
  6. 6. でも最近は普通に速い LightCsvはお役御免 % ruby -v -Ecp932 -rcsv -e 'CSV.foreach("KEN_ALL.CSV"){}' ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux] real 0m2.869s user 0m2.836s sys 0m0.020s 6
  7. 7. でも一つ問題が 7
  8. 8. nilを返しやがる! require 'csv' 'a,"",b,,c'.parse_csv #=> ["a", "", "b", nil, "c"] 8
  9. 9. 考慮しないとぬるぽ require 'csv' 'a,"",b,,c'.parse_csv.each do |col| p col.upcase end "A" "" "B" a.rb:4:in `block in <main>': undefined method `upcase' for nil:NilClass (NoMethodError) 9
  10. 10. 誰得 ������� 10
  11. 11. ということでnilを返さないCSVライブラリを作った 11
  12. 12. RightCSVRightCSV 12
  13. 13. require 'rightcsv' 'a,"",b,,c'.parse_csv #=> ["a", "", "b", "", "c"] 'a,"",b,,c'.parse_csv.map(&:upcase) #=> ["A", "", "B", "", "C"] 13
  14. 14. こんなの使わなくてもみんなが幸せになりますように 14
  15. 15. 以上以上 15

×