2016-10-20 82 views
0

我正在努力將插入查詢寫入備份數據庫。我把地方和實體表寫入這個數據庫。問題是實體通過place.id列鏈接到位置。我在地點表中添加了一個列place.original_id以存儲它的原始「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 

我知道我失去了一些東西,因爲這是行不通的。當entity.place_id = places.original_id時,我需要從地點抓取id列。任何幫助都會很棒。

+0

您是否考慮過使用[Postgres內置的備份和恢復機制](https://www.postgresql.org/docs/9.1/static/backup.html)?那分號應該在那裏嗎? – Schwern

+0

不是它的假設是逗號。我實際上是複製這些表到這個postgres數據庫和存儲。它是一個一次性項目。原始數據在一個oracle表中,我只需要把它帶到postgres中,這樣我就可以在另一個項目中使用它,而不用搞亂原始數據。這就是爲什麼ID列不完美匹配。 –

+0

你是如何做Oracle轉儲的? 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.id列鏈接到位置。我在地點表中添加了一個列place.original_id以存儲它的原始「ID」。所以現在,我進入新的數據庫它的ID列更改,但我有存儲原始ID,所以我仍然可以鏈接到它的實體表的地方。

首先不會有這個問題會更簡單。

與其試圖在事後修復此問題,更好的解決方案是轉儲並加載placesentities,完整的主鍵和外鍵完好無損。 Oracle的EXPORT或諸如ora2pg的實用程序應該能夠執行此操作。

對不起,我不能說更多。我瞭解Postgres,而不是Oracle。