我目前正在開發一個項目,其中有一個生產Oracle數據庫的副本,其中包含一些要用一組測試值替換的生產值(假設我有更多的生產記錄比測試,我會有重複)。用Oracle DB中的值替換測試數據集
這裏是什麼,我希望做一個樣本:
任何建議,將不勝感激。
我目前正在開發一個項目,其中有一個生產Oracle數據庫的副本,其中包含一些要用一組測試值替換的生產值(假設我有更多的生產記錄比測試,我會有重複)。用Oracle DB中的值替換測試數據集
這裏是什麼,我希望做一個樣本:
任何建議,將不勝感激。
一種方法是通過他們的rowid
進行編號行,然後用模運算原始數據與您的測試數據表,就像這樣:
merge into customer c
using (
with cte_customer as (
select rowid xrowid, mod(row_number() over (order by rowid)-1,(select count(*) from test_data))+1 rownumber
from customer
order by rowid
), cte_testdata as (
select row_number() over (order by rowid) rownumber, first_name, last_name, email
from test_data
order by rowid
)
select c.xrowid, t.last_name, t.first_name, t.email
from cte_customer c
left outer join cte_testdata t on (t.rownumber = c.rownumber)
order by c.xrowid
) u
on (c.rowid = u.xrowid)
when matched then update set
c.last_name = u.last_name,
c.first_name = u.first_name,
c.email = u.email
也許使用MOD(ROWNUM)相匹配的行? – Randy