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

How to insert data with specific ID into Postgres using Sequel

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

是否可以将项目插入我的数据库并提供特定 ID 用作主键,或者这是个坏主意?我尝试手动提供 ID 并得到 "id is a restricted primary key".

不能插入id,因为数据库和Sequel要将主索引值定义为序号。

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

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

然后使用 insert.

如果您绝对必须重用这些 ID,那么您可以按主要 ID 对数据进行排序,然后遍历记录,为空缺插入虚拟记录,然后插入真实记录数据,允许 DBM 仍然使用下一个序号。但这确实与我们使用数据库的流程背道而驰。