首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataMapper导入主键

DataMapper导入主键
EN

Stack Overflow用户
提问于 2010-06-15 16:41:50
回答 2查看 337关注 0票数 3

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

我的模型是这样的:

代码语言:javascript
复制
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包含主键,所以当我进行导入时,我使用它作为它的键。下一次运行导入时,我将清除表并重新启动,但是datamapper会发出抱怨,因为主键已经被获取。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-16 01:02:43

您可以使用DataMapper.auto_migrate!清除这些表,然后重新创建与当前模型状态匹配的表。新表将不包含以前运行的任何数据。

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

代码语言:javascript
复制
DataMapper.finalize.auto_migrate!
票数 2
EN

Stack Overflow用户

发布于 2010-06-15 18:35:11

如果您从导入创建完整的DB,我真的建议完全spill数据库,以避免早期运行时的任何溢出。这也让您的build-db代码路径得到了很好的测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3043701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档