ruby で複数の CSV で使われる ID を置換する
概要
Voice.csv の ID をリネームし、VoiceId カラムを持つ他の複数の CSV もリネームに対応するという機会があったのでメモ。
require 'csv' class Voice def self.rename(str_id) case id = str_id.to_i when 1..988 return 0 + id - 0 when 989..1196 return 1001 + id - 989 else # headerの場合 return str_id end end end voice_csv = CSV.generate do |csv| CSV.foreach('Voice.csv') do |data| # IDカラムは1列目 data[0] = Voice.rename(data[0]) csv << data end end File.open("Temp/Voice.csv", "w") do |file| file.write(voice_csv) end Dir.glob("*") do |file| if file.end_with?("csv") csv = CSV.generate do |csv| CSV.foreach(file) do |data| # VoiceIdカラムは2列目 data[1] = Voice.rename(data[1]) csv << data end end File.open("Temp/#{file}", "w") do |file| file.write(csv) end end end