Sequel presents the database to you as if it were a nested set of arrays. My script was a bigger and only slightly more elaborate version of the following simple script:
sourcedb = Sequel.open 'postgres://user:email@example.com/dbname' destdb = Sequel.open 'postgres://user:firstname.lastname@example.org/dbname' destdb.transaction do destdb[:devicemodel].delete sourcedb[:devicemodel].each do |row| # perform fixup/conversion here destdb[:devicemodel] << row end # other tables here endThe neat thing too is if you just want to run some SQL because you know exactly what you need to do, it's easy, and the results are returned to you in the same way that you can iterate over:
emails = db["select distinct emailcontact from contact where accountkey in (select distinct accountkey from contract)"].all emails.each do |row| next if row[:emailcontact].nil? puts row[:emailcontact] endFor a more thorough introduction I'd read this interview with Sharon Rosner, the creator of Sequel, discussing why Sequel was born and where it's a good fit versus other existing ORM tools. For my migration script, it was great, allowing me to write simple Ruby loops manipulating the data as an array, yet allowing me to do raw SQL wherever it was easier.