Comment convertir un tableau de hachages en fichier .csv?
J'ai essayé
CSV.open("data.csv", "wb") do |csv|
@data.to_csv
end
mais c'est vide
Essaye ça:
CSV.open("data.csv", "wb") do |csv|
@data.each do |hash|
csv << hash.values
end
end
Si vous voulez que la première ligne du fichier CSV contienne les clés du hachage (un peu comme un en-tête), faites simplement:
CSV.open("data.csv", "wb") do |csv|
csv << @data.first.keys # adds the attributes name on the first line
@data.each do |hash|
csv << hash.values
end
end
Veuillez lire le commentaire de @cgenco ci-dessous: Il a écrit un patch de singe pour la classe Array.
Si les hachages ne sont pas uniformes, vous vous retrouverez avec des données dans les mauvaises colonnes. Vous devriez plutôt utiliser values_at:
CSV.open("data.csv", "wb") do |csv|
keys = @data.first.keys
csv << keys
@data.each do |hash|
csv << hash.values_at(*keys)
end
end