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
参考