概要
rubyでCSVを操作するときのメモ
ファイルから読み込み
CSV.read
CSVファイルを一度にすべて読み込む
ファイルのデータサイズが大きい時はメモリに負荷がかかるので注意!
filename = "filename.csv"
data = CSV.read(filename, headers: true)
puts data
CSV.foreach
CSVファイルを1行ずつ読み込む
ファイルのデータサイズが大きい時におすすめ
filename = "filename.csv"
CSV.foreach(filename, headers: true) do |row|
# do something
# ex. puts row['column1']
end
バイナリ or テキストから読み込み
CSV.parse
CSV形式の文字列からCSVデータを操作するときに使用する
取得したデータは1行ずつ処理できます
CSV.parse(data, headers: true) do |row|
# do something
# ex. puts row['column1']
end
書き込み
CSV.open
w 書き込みモード
a 追加書き込みモード
filename = "filename.csv"
CSV.open(filename,'w') do |csv|
csv << ["A", "AA", "AAA"]
csv << ["B", "BB", "BBB"]
end
CSV.generate
filename = "filename.csv"
date = CSV.generate do |csv|
csv << ["A", "AA", "AAA"]
csv << ["B", "BB", "BBB"]
end
File.open(filename, 'w') do |f|
f.write(data)
end
generateの引数に \uFEFFを設定してBOM付きで出力することもできます
bom = "\uFEFF"
filename = "filename.csv"
data = CSV.generate(bom) do |csv|
csv << ["あ","い","う","え","お"]
csv << ["か","き","く","け","こ"]
end
File.open(filename, 'w') do |f|
f.write(data)
end