开发者

DataMapper import primary key

开发者 https://www.devze.com 2023-01-03 17:18 出处:网络
I\'m running an import script which imports a CSV dump of a database into a local sqlite database using DataMapper.

I'm running an import script which imports a CSV dump of a database into a local sqlite database using DataMapper.

My models look like this:

class Staff

    i开发者_Go百科nclude DataMapper::Resource

    property  :staff_id, String, :key => true
    property  :full_name, String

end

class Project

  include DataMapper::Resource

  property  :project_id, Integer, :key => true
  property  :title, String
  property  :status, String

 belongs_to  :staff

end

The CSV contains the primary key so when I'm do the import I'm using that as it's key. Next time I run the import I clear the tables and start again, however datamapper moans because the primary keys have already been taken.

Is there a way to stop datamapper moaning about this or should I just delete the .db file and re-create an empty .db file just before the import runs? If so what's the easiest way to do this.


You can use DataMapper.auto_migrate! to blow away the tables, and then recreate them matching the current model state. The new tables will be empty of any data from previous runs.

So just after you define your models, but before you begin importing the data do something like the following:

DataMapper.finalize.auto_migrate!


If you create the complete DB from the import, I'd really recommend nuking the database completely to avoid any spill-over from earlier runs. This also keeps your build-db code path well tested.

0

精彩评论

暂无评论...
验证码 换一张
取 消