如何使用Sequel将具有特定ID的数据插入Postgres

时间:2016-12-05 20:59:03

标签: ruby database postgresql sequel

我使用Sequel gem填充Postgres数据库。但是,数据是从另一个DB中提取的,并且已包含ID。我只是拉了那些ID的一小部分,而且它们是完全随机的,所以它们非常无序。

是否可以将项目插入我的数据库并提供用作主键的特定ID,或者这是一个坏主意?我试图手动提供ID,并且“#id; id”是受限制的主键"。

1 个答案:

答案 0 :(得分:0)

您无法插入ID,因为数据库和Sequel想要将主索引值定义为序号。

您可以使用哈希的:id方法从哈希中删除delete

foo = {id: 1, bar: 2}
foo.delete(:id) # => 1
foo # => {:bar=>2}

然后使用insert

如果您绝对必须重用这些ID,那么您可以按主ID对数据进行排序,然后循环记录,为空白插入虚拟记录,然后插入真实数据,从而允许DBM仍然使用下一个序列号。但这确实违背了我们使用数据库的方式。