2016-12-05 81 views
0

我使用Sequel gem填充Postgres數據庫。但是,數據是從另一個數據庫中提取的,並且已經包含一個ID。我只是拉出這些ID的一小部分,而且它們是完全隨機的,所以它們非常失序。如何使用Sequel將具有特定ID的數據插入到Postgres中

是否可以插入項目到我的數據庫並提供特定的ID作爲主鍵使用,或者這是一個壞主意?我試圖手動提供ID,並得到「ID是一個受限制的主鍵」。

+0

歡迎來到SO。請閱讀「[問]」和「[mcve]」。如果你提供更多關於你在做什麼以及如何做的詳細信息,它將在未來幫助其他人。演示問題的最小代碼很有幫助;代碼就像一張圖片,價值10,000字。 –

回答

0

您不能插入id,因爲數據庫和Sequel想要將主索引值定義爲序列號。

您可以使用Hash的delete方法請從哈希:id

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

然後使用insert

如果你絕對必須重用那些ID,那麼你就可以在你的數據由主標識然後通過記錄循環進行排序,對於缺口,然後將實際的數據插入僞記錄,使DBM使用下一個序號仍然是。但是這實際上違背了我們如何使用數據庫的流程。

+0

夠公平 - 我決定把現有的ID存儲爲'originalID',它的工作原理。謝謝! – Max

+0

我不會推薦使用camelCase名稱作爲字段。堅持使用snake_case,一旦你使用Sequel的模型,它就會很好地工作。 (你應該這樣做,因爲它們非常強大。) –

相關問題