web-dev-qa-db-fra.com

Comment créer un nouveau fichier CSV en Ruby?

J'ai un fichier CSV appelé "A.csv". J'ai besoin de générer un nouveau fichier CSV appelé "B.csv" avec les données de "A.csv".

J'utiliserai un sous-ensemble de colonnes de "A.csv" et devrai mettre à jour la valeur d'une colonne avec la nouvelle valeur dans "B.csv". Ensuite, j'utilise ces données de B.csv pour valider à la base de données.

  1. Comment créer un nouveau fichier CSV?
  2. Comment copier les données de la colonne requise de A.csv vers "B.csv"?
  3. Comment puis-je ajouter des valeurs pour une colonne particulière?

Je suis capable de lire le format CSV, d’obtenir un tableau ou un hachage.

78
user1718712

Comme mikeb l’a fait remarquer, il existe les docs - http://Ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html - Ou vous pouvez suivre le exemples ci-dessous (tous sont testés et fonctionnent):

Pour créer un nouveau fichier:

Dans ce fichier, nous aurons deux lignes, une ligne d’en-tête et une ligne de données, un fichier CSV très simple:

require "csv"
CSV.open("file.csv", "wb") do |csv|
  csv << ["animal", "count", "price"]
  csv << ["fox", "1", "$90.00"]
end

résultat, un fichier appelé "fichier.csv" avec:

animal,count,price
fox,1,$90.00

Comment ajouter des données à un fichier CSV

Presque le même forumla que ci-dessus seulement au lieu d'utiliser le mode "wb", nous utiliserons le mode "a +". Pour plus d'informations à ce sujet, voir cette réponse au débordement de pile: Quels sont les modes et options de Ruby File.open?? )

CSV.open("file.csv", "a+") do |csv|
  csv << ["cow", "3","2500"]
end

Maintenant, lorsque nous ouvrons notre fichier.csv, nous avons:

animal,count,price
fox,1,$90.00
cow,3,2500

Lire notre fichier CSV

Maintenant, vous savez comment copier et écrire dans un fichier, lire un fichier CSV et donc récupérer les données à manipuler que vous venez de faire:

CSV.foreach("file.csv") do |row|
  puts row #first row would be ["animal", "count", "price"] - etc.
end

Bien sûr, cela ressemble à une centaine de façons différentes de tirer des informations d'un fichier CSV en utilisant ce bijou. Pour plus d’informations, je vous suggère de visiter la documentation maintenant que vous avez un guide: http://Ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html

171
newUserNameHere

Avez-vous vu la classe CSV de Ruby? Cela semble assez complet. Découvrez-le ici: http://Ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html

4
MikeB