2016-12-05 8 views
0

Sequel gemを使用してPostgresデータベースを作成しています。ただし、データは別のDBから取得され、すでにIDが含まれています。私はそれらのIDの非常に小さなサブセクションを引っ張っているだけであり、完全にランダムであるため、非常に順序が乱れています。Sequelを使用して特定のIDを持つデータをPostgresに挿入する方法

データベースにアイテムを挿入してプライマリキーとして使用する特定のIDを指定することは可能ですか、それとも悪い考えですか? IDを手動で入力しようとしましたが、「IDは制限された主キーです」と表示されました。

+0

ようこそ。 "[ask]"と "[mcve]"をお読みください。あなたがやっていることややっていることをもっと詳しく説明すれば、将来的に他人を助けるでしょう。問題を示す最小限のコードは参考になります。コードは絵のように10,000語分の価値があります。 –

答えて

0

データベースとSequelがプライマリインデックス値を連続番号として定義するため、idを挿入できません。

あなたはハッシュのdeleteメソッドを使用してハッシュから:idを削除することができます

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

そしてinsertを使用しています。

あなたは絶対に DBMは、次を使用することができ、ギャップ、その後、実際のデータのためのダミーレコードを挿入レコードをループそして、その後、プライマリIDによって、あなたのデータを並べ替えることができ、それらのIDを再利用する必要がある場合連続番号はまだありません。しかし、それは実際にDBをどのように使用するかの流れに逆らっています。

+0

十分な公正 - 既存のIDを「originalID」として保存することにしました。これは機能します。ありがとうございました! – Max

+0

フィールドにはcamelCase名の使用をお勧めしません。 snake_caseに固執すると、Sequelのモデルを使用していれば正常に機能します。 (彼らは非常に強力なので、これを行う必要があります。) –

関連する問題