memorandum

IT技術の習得を記録します

CSV コマンドから指定したCSVファイルのデータを読み込む

[CSV.read] コマンドから指定したファイルから一度に読み込む

# csvライブラリを使用する
require 'csv'

# コマンドから指定するファイルの数ではない場合(この場合はファイル数が1つではない場合)
if ARGV.length != 1
 # 異なったコマンドの場合の警告の指定、その場合に実行しないようにする
  puts "usage : ruby #{__FILE__} file_name "
  exit 1
end


CSV.readでコマンドで指定されたデータを読み込み、

list.each do |list|
end

でlistという変数にcsvファイルのデータが1行ずつ入る

ヘッダーを使用しない場合

equire 'csv'

if ARGV.length != 1
  puts "usage : ruby #{__FILE__} file_name "
  exit 1
end

list = CSV.read("#{ARGV[0]}")
# list = CSV.read("#{ARGV[0]}", headers: true)
list.each do |list|
   p list
end

出力結果

["id", "campany_name", "adress"]
["1", "株式会社りんご", "青森県"]
["2", "株式会社みかん", "和歌山県"]
["3", "めろん有限会社", "北海道県"]
["4", "(株)落花生", "千葉県"]

ヘッダーを使用する場合

equire 'csv'

if ARGV.length != 1
  puts "usage : ruby #{__FILE__} file_name "
  exit 1
end

# list = CSV.read("#{ARGV[0]}")
list = CSV.read("#{ARGV[0]}", headers: true)
list.each do |list|
   p list
end

出力結果

#<CSV::Row "id":"1" "campany_name":"株式会社りんご" "adress":"青森県">
#<CSV::Row "id":"2" "campany_name":"株式会社みかん" "adress":"和歌山県">
#<CSV::Row "id":"3" "campany_name":"めろん有限会社" "adress":"北海道県">
#<CSV::Row "id":"4" "campany_name":"(株)落花生" "adress":"千葉県">

ヘッダーを使用して出力

list = CSV.read("#{ARGV[0]}", headers: true)
list.each do |list|
   p "#{list["adress"]}にある、#{list["campany_name"]}"
end

出力結果

"青森県にある、株式会社りんご様"
"和歌山県にある、株式会社みかん様"
"北海道県にある、めろん有限会社様"
"千葉県にある、(株)落花生様"

[CSV.foreach] 一行ずつ読み込む場合

CSV.foreach("#{ARGV[0]}", headers: true) do |list|
   p "#{list["adress"]}にある、#{list["campany_name"]}"
end

出力結果は同じようになる

"青森県にある、株式会社りんご様"
"和歌山県にある、株式会社みかん様"
"北海道県にある、めろん有限会社様"
"千葉県にある、(株)落花生様"