我正在运行一个导入脚本,该脚本使用DataMapper将数据库的CSV dump导入到本地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
endCSV包含主键,所以当我进行导入时,我使用它作为它的键。下一次运行导入时,我将清除表并重新启动,但是datamapper会发出抱怨,因为主键已经被获取。
有没有办法停止datamapper对此的抱怨,或者我应该在导入运行之前删除.db文件并重新创建一个空的.db文件?如果是这样,那么最简单的方法是什么。
发布于 2010-06-16 01:02:43
您可以使用DataMapper.auto_migrate!清除这些表,然后重新创建与当前模型状态匹配的表。新表将不包含以前运行的任何数据。
因此,在定义模型之后,但在开始导入数据之前,请执行类似以下操作:
DataMapper.finalize.auto_migrate!发布于 2010-06-15 18:35:11
如果您从导入创建完整的DB,我真的建议完全spill数据库,以避免早期运行时的任何溢出。这也让您的build-db代码路径得到了很好的测试。
https://stackoverflow.com/questions/3043701
复制相似问题