高木のブログ

【Ruby】Fakerを使ってダミーデータを作成する

2021/10/03

ちょっとした検証で大規模なダミーデータのCSVファイルが欲しかった
よくあるダミーデータ生成サービスだと1万行くらいまでしか対応してなかったりするので、RubyでFakerというGemを使ってスクリプトを書いてダミーデータを作った

ダミーデータの中身は名前、年齢、メールアドレスの3項目で1000万行

require 'bundler/inline'
require 'csv'

gemfile do
  source 'https://rubygems.org'
  gem 'faker'
end

CSV.open('./dummy.csv', 'w') do |csv|
  csv << ['name', 'age', 'email']
  10000000.times do
    csv << ["#{Faker::Name.first_name} #{Faker::Name.last_name}", rand(18..80), Faker::Internet.email]
  end
end
$ head dummy.csv
name,age,email
Kimberely Grimes,25,silvia@braun.info
Juliann Waelchi,21,norberto@casper.name
Hershel Pfannerstill,22,eliseo@doyle.name
Carson Reynolds,32,danuta@hand-armstrong.biz
Walter Koch,33,eunice@durgan-kuhn.io
Rob Kuphal,48,gigi_lubowitz@boyle.org
Lawerence Dietrich,72,cassidy.vonrueden@emmerich-pfannerstill.org
Hubert VonRueden,50,ned.reichert@oconnell.org
Harry Pacocha,56,emilia.abbott@turner.biz
$ wc -l dummy.csv
 10000001 dummy.csv

ヘッダーの1行を除いて1000万行出来ている

$ time ruby app.rb
ruby app.rb  5707.99s user 25.91s system 63% cpu 2:29:51.79 total

ちなみに1時間半くらい掛かった
どうせなら高速化にチャレンジして記事にしたらよかったけどまあいいや


ytkg

Written by ytkg, Twitter, GitHub