我使用Sequel gem填充Postgres數據庫。但是,數據是從另一個數據庫中提取的,並且已經包含一個ID。我只是拉出這些ID的一小部分,而且它們是完全隨機的,所以它們非常失序。如何使用Sequel將具有特定ID的數據插入到Postgres中
是否可以插入項目到我的數據庫並提供特定的ID作爲主鍵使用,或者這是一個壞主意?我試圖手動提供ID,並得到「ID是一個受限制的主鍵」。
我使用Sequel gem填充Postgres數據庫。但是,數據是從另一個數據庫中提取的,並且已經包含一個ID。我只是拉出這些ID的一小部分,而且它們是完全隨機的,所以它們非常失序。如何使用Sequel將具有特定ID的數據插入到Postgres中
是否可以插入項目到我的數據庫並提供特定的ID作爲主鍵使用,或者這是一個壞主意?我試圖手動提供ID,並得到「ID是一個受限制的主鍵」。
您不能插入id,因爲數據庫和Sequel想要將主索引值定義爲序列號。
您可以使用Hash的delete
方法請從哈希:id
:
foo = {id: 1, bar: 2}
foo.delete(:id) # => 1
foo # => {:bar=>2}
然後使用insert
。
如果你絕對必須重用那些ID,那麼你就可以在你的數據由主標識然後通過記錄循環進行排序,對於缺口,然後將實際的數據插入僞記錄,使DBM使用下一個序號仍然是。但是這實際上違背了我們如何使用數據庫的流程。
夠公平 - 我決定把現有的ID存儲爲'originalID',它的工作原理。謝謝! – Max
我不會推薦使用camelCase名稱作爲字段。堅持使用snake_case,一旦你使用Sequel的模型,它就會很好地工作。 (你應該這樣做,因爲它們非常強大。) –
歡迎來到SO。請閱讀「[問]」和「[mcve]」。如果你提供更多關於你在做什麼以及如何做的詳細信息,它將在未來幫助其他人。演示問題的最小代碼很有幫助;代碼就像一張圖片,價值10,000字。 –