我使用Sequel gem填充Postgres数据库。但是,数据是从另一个DB中提取的,并且已包含ID。我只是拉了那些ID的一小部分,而且它们是完全随机的,所以它们非常无序。
是否可以将项目插入我的数据库并提供用作主键的特定ID,或者这是一个坏主意?我试图手动提供ID,并且“#id; id”是受限制的主键"。
答案 0 :(得分:0)
您无法插入ID,因为数据库和Sequel想要将主索引值定义为序号。
您可以使用哈希的:id
方法从哈希中删除delete
:
foo = {id: 1, bar: 2}
foo.delete(:id) # => 1
foo # => {:bar=>2}
然后使用insert
。
如果您绝对必须重用这些ID,那么您可以按主ID对数据进行排序,然后循环记录,为空白插入虚拟记录,然后插入真实数据,从而允许DBM仍然使用下一个序列号。但这确实违背了我们使用数据库的方式。