DataMapper导入主键

时间:2010-06-15 08:41:50

标签: ruby sqlite import primary-key datamapper

我正在运行一个导入脚本,该脚本使用DataMapper将数据库的CSV转储导入到本地sqlite数据库中。

我的模特看起来像这样:

class Staff

    include 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

CSV包含主键,所以当我进行导入时,我正在使用它作为键。下次我运行导入时清除表格然后重新开始,但是数据管理器会因为已经使用了主键而呻吟。

有没有办法阻止数据映射器对此抱怨?或者我应该删除.db文件并在导入运行之前重新创建一个空的.db文件?如果是这样,最简单的方法是什么。

2 个答案:

答案 0 :(得分:2)

您可以使用DataMapper.auto_migrate!来清除表格,然后重新创建与当前模型状态匹配的表格。新表将没有先前运行的任何数据。

因此,在定义模型之后,在开始导入数据之前,请执行以下操作:

DataMapper.finalize.auto_migrate!

答案 1 :(得分:0)

如果您从导入创建完整的数据库,我真的建议完全修改数据库,以避免早期运行中的任何溢出。这也使您的build-db代码路径得到充分测试。