[Ruby] Comment convertir un fichier CSV en Yaml (Yml)

procédure

  1. Bibliothèque standard Ruby csv et [yml](https: //docs.ruby-lang) avec la méthode require .org / ja / master / library / yaml.html) est lu.
require 'csv'
require 'yaml'
  1. Lorsque vous exécutez CSV.read (path_to_csv ,: headers => true), une instance de la classe CSV :: table sera renvoyée. La méthode map prend les éléments (instances de la classe CSV :: Row) un par un, et la méthode to_h hache les éléments. Étant donné que la valeur de retour de la méthode map est un tableau, un tableau avec le hachage comme élément est créé. Le fait est que le nom de clé du hachage est le nom de colonne de CSV en ajoutant cette fois l'option : header => true.
hash_arr = CSV.read(path_to_csv, :headers => true).map(&:to_h)
=>[{"region_id"=>"1", "country_id"=>"1", "region_name"=>"Hokkaido"}, {"region_id"=>"2", "country_id"=>"1", "region_name"=>"Préfecture d'Aomori"},...]
  1. Ouvrez le fichier spécifié par chemin en mode écriture, convertissez le tableau avec le hachage de 2 comme élément en Yaml et enregistrez-le.
File.open(path_to_yaml, 'w') { |f| f.write(hash_arr.to_yaml) }

Post-scriptum: Il semble que la même écriture puisse être faite ci-dessous. Merci pour votre commentaire!

IO.write path_to_yaml, hash_arr.to_yaml

P.S En dehors de là, je gérais une table (pays ou région) dont la valeur est fondamentalement inchangée dans DB, donc je l'ai convertie cette fois pour la gérer avec ActiveYaml. Même s'il est géré par ActiveYaml, c'est pratique car vous pouvez utiliser la table comme ActiveRecord (des méthodes de classe telles que all et find peuvent être utilisées).

Recommended Posts

[Ruby] Comment convertir un fichier CSV en Yaml (Yml)
Comment convertir un fichier erb en haml
Comment lire votre propre fichier YAML (*****. Yml) en Java
Ruby: CSV :: Comment utiliser la note de tableau
Ruby Comment convertir entre les majuscules et les minuscules
Convertir un fichier csv en fichier d'enregistrement de longueur fixe à l'aide d'énumération
Comment gérer les fichiers TSV et les fichiers CSV dans Ruby
Comment convertir un fichier en tableau d'octets en Java
Comment utiliser le retour Ruby
Convertir en chaîne Ruby Leet
[Ruby] Comment commenter
Ruby: Comment utiliser les cookies
Comment convertir la base Java
Comment demander un fichier CSV au format JSON avec jMeter
[Ruby] Comment diviser chaque requête GraphQL en fichiers
[Facile] Comment formater automatiquement les fichiers Ruby erb avec vsCode
Convertir un objet ruby au format JSON
Comment itérer indéfiniment en Ruby
Comment installer Ruby via rbenv
Comment utiliser Ruby on Rails
Comment installer Bootstrap dans Ruby
Comment convertir LocalDate et Timestamp
[Débutant] Comment supprimer AUCUN FICHIER
Comment utiliser la méthode Ruby inject
Comment exécuter l'IRB de Ruby (Ruby interactif)
[Java] Comment utiliser la classe File
[Rails] Comment convertir ERB en Haml
Comment ajouter un fichier jar dans ScalaIDE
[Core ML] Comment convertir YOLO v3 en Core ML
Longueur, taille, nombre de rubis Comment utiliser
Comment réaliser le téléchargement de fichiers avec Feign
[Ruby] Comment utiliser slice pour les débutants
Comment convertir java.util.Date, java.sql.Date, LocalDate, ZonedDateTime
[Ruby on Rails] Comment utiliser redirect_to
[Facile] Comment mettre à niveau Ruby et le bundler
Comment diviser un fichier de message Spring Boot
Comment réaliser le téléchargement de fichiers avec Feign
Conversion de JSON en TSV et TSV en JSON avec Ruby
Comment compresser un fichier JAVA CSV et le gérer dans un tableau d'octets
Comment trouver la cause de l'erreur Ruby
[Android] Comment convertir une chaîne de caractères en resourceId
Comment vider de la base de données (DB) vers le fichier de départ
[Ruby] Comment utiliser la méthode gsub et la sous-méthode
Comment sortir le CSV créé par Rails vers S3
Comment convertir un contrat de solidité en une classe de contrat Java
Comment écrire du code qui pense Ruby orienté objet
Comment se lier avec un fichier de propriétés dans Spring Boot
[Ruby] Comment générer une chaîne de caractères d'alphabet aléatoire