2016-10-20 6 views
0

私は、挿入クエリをバックアップデータベースに書き込もうとしています。私はplaceとentitiesテーブルをこのデータベースに書いています。問題はエンティティがplace.id列を介してプレースにリンクされていることです。私はplaceテーブルに列place.original_idを追加して元の「id」を格納しました。だから今私は新しいデータベースに入れたidカラムを変更しましたが、元のidが保存されているので、エンティティテーブルをそれにリンクすることができます。postgresデータベースに挿入する

insert into entities_backup (id, place_id) 
select 
    nextval('public.entities_backup_id_seq'), 
    (select id from places where original_id = (select place_id from entities) as place_id 
from 
    entities 

私は、これは動作しませんので、私は何かが欠けています知っている:私はこれまでのところ、私はこの時点で午前新しいIDに

を取得するためにエンティティを作成する方法を把握しようとしています。私は、entity.place_id = places.original_idの場所からID列を取得する必要があります。どんな助けも素晴らしいだろう。

+0

[Postgresに組み込まれたバックアップと復元の仕組み](https://www.postgresql.org/docs/9.1/static/backup.html)を使用したことはありますか?セミコロンがそこにあるはずですか? – Schwern

+0

いいえ、コンマであるとします。私は実際にこれらのテーブルをこのpostgresデータベースにコピーして保存しています。その一度だけのプロジェクト。元のデータはオラクル表にあります。私は元のデータを混乱させずに別のプロジェクトで使用できるように、それをpostgresに持っていくだけです。 ID列は完全に一致しません。 –

+0

Oracleダンプはどのようにしましたか?オラクルから「場所」と「エンティティ」の両方が提供されましたか? – Schwern

答えて

1

私は、これはあなたが

insert into entities_backup (id, place_id) 
select nextval('public.entities_backup_id_seq'), places.id 
from places, entities 
where places.original_id = entities.place_id; 
0

何をしたい私は、バックアップ・データベースにINSERTクエリを作成しようと取り組んでいると思います。私はplaceとentitiesテーブルをこのデータベースに書いています。問題はエンティティがplace.id列を介してプレースにリンクされていることです。私はplaceテーブルに列place.original_idを追加して元の「id」を格納しました。だから今私は新しいデータベースに入れたidカラムを変更しましたが、元のidが保存されているので、エンティティテーブルをそれにリンクすることができます。

最初にこの問題がない方が簡単です。

事実の後にこれを修正するのではなく、placesentitiesをダンプしてロードし、プライマリキーと外部キーを完全にロードすることをお勧めします。オラクルのEXPORTまたはora2pgのようなユーティリティがそれを実行できるはずです。

申し訳ありませんもっと詳しくは言えません。オラクルではなくPostgresを知っています。

関連する問題