RubyスクリプトでCSVからYAMLファイルにデータを書き出す

プロダクトオーナーから共有されたCSVファイルをseedデータとして投入するために、YAMLファイルへデータを記述する必要がありました。

手作業で1つずつコピペするのは面倒なので、CSVファイルを読み込んでYAMLファイルへ書き出すためのカンタンなRubyスクリプトを書きました。似たようなケースで使えるように、備忘録としてまとめます。

目次

RubyスクリプトでCSVからYAMLファイルにデータを書き出す

結論として、今回は以下のようなRubyスクリプトで書き出しました。

require 'csv'
require 'yaml'

csv_file_path = '読み込むCSVファイルのパス.csv'

csv_data = CSV.read(csv_file_path, headers: true)
keywords = csv_data.map(&:to_h)

File.open('書き出すYAMLファイルのパス.yml', 'w') do |file|
  YAML.dump(keywords, file)
end

自分がよく分からなかったところを中心に詳細を書きます。

CSVクラスの read メソッド

第1引数に読み込むファイルのパスを、第2引数にオプションを指定します。今回の headers オプションはCSVファイルの1行目をヘッダーとして扱うためのオプションです。

その他に指定できるオプションは、こちらのドキュメントにまとまっています。

Fileクラスの open メソッド

第1引数に書き込むファイルのパスを、第2引数にモードを指定します。指定できるモードとその機能は次のとおり。

モード説明
rファイルを読み取り専用で開く
wファイルを書き込みモードで開く。書き込む内容でファイルは上書きされる
aファイルを書き込みモードで開く。書き込む内容はファイルの末尾に追加される

詳細はこのドキュメントにまとまっています。

YAMLクラスの dump メソッド

第1引数にYAML形式に変換したいオブジェクトを、第2引数に出力先を指定します(今回はファイル)なお、第2引数を指定しない場合は、YAML形式に変換した文字列を返してくれます。

このドキュメントを参考にしました。

まとめ

CSVクラスのreadメソッド、Fileクラスのopenメソッド、YAMLクラスのdumpメソッドを組み合わせることで、CSVファイルの読み込み〜YAMLファイルへの書き込みまで実現できることを学びました。

参考文献
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

未経験でSESから従業員300名以上の自社開発企業に転職しました。業務や個人開発で直面した問題や、転職・学習の経験を発信していきます。

コメント

コメントする

目次