mongodbからjsonエクスポートしたデータをsqliteへ投入 (rubyでsequel使用)

mongodbからcsvエクスポートしたデータをsqliteにインポートしようと思ったら
1対nの関連テーブルをembeddedしてた・・・
そんな手間でもないからjsonエクスポートしたものをスクリプトでsqliteへ入れることに
で、ormとしてsequel使ってみた

1対nマイグレーションファイル作成
# migrations/001_create_artists.rb
Sequel.migration do
  up do
    create_table(:artists) do
      primary_key :id
      String :name, :null=>false
    end
  end

  down do
    drop_table(:artists)
  end
end
# migrations/002_create_albums.rb
Sequel.migration do
  up do
    create_table(:albums) do
      primary_key :id
      String :name, :null=>false
      foreign_key :artist_id, :artists
      index :artist_id
    end
  end

  down do
    drop_table(:albums)
  end
end
db作成
sequel -m ./migrations sqlite://test.sqlite3
jsonエクスポートデータsqlite投入
require "sequel"
require "json"
Sequel.connect('sqlite://test.sqlite3')

class Artist < Sequel::Model
  one_to_many :albums
end

class Album < Sequel::Model
  many_to_one :artist
end

open("test.json","r:utf-8") do |f|
  f.each do |l|
    artist = JSON.parse(l)
    a = Artist.create(:name => artist["name"])
    artist["albums"].each do |album|
  	a.add_album(:name => album["name"])
    end
  end
end

参考

migration.rdoc

association_basics.rdoc