LoginSignup
0
0

More than 3 years have passed since last update.

RubyのCSV.tableはヘッダーを小文字に変換するので注意

Last updated at Posted at 2019-10-28

注意というか自分が多少ハマったのでメモしておきます。

次のようなカラムのテーブルデータのcsvを読み込もうとして、 CSV.table を使って読み込もうとしました。

CampaignId,CampaignName
1000,example1
1001,example2

すると以下のように自動で小文字に変換されてしまっていました。これによって一部のキャンペーン情報が読み取れずにエラーが発生してしまっていました。

require 'csv'

table = CSV.table("report.csv")
p row[0][:CampaignId]
# => nil

p row[0][:campaignid]
# => 1000

実際にドキュメントを読むと、 header_converters: :symbolが設定されており、

CSV.read( path, { headers:           true,
                  converters:        :numeric,
                  header_converters: :symbol }.merge(options) )

HeaderConvertsの挙動は以下のようなものらしいです。

ヘッダの文字列を小文字に変換してから、空白文字列 (\s) をアンダースコアに 置換し、非英数字 (\W) を削除します。最後に String#to_sym を呼び出します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0