从备份恢复数据

时间:2015-03-30 05:30:45

标签: plsql

我试图将转储文件中的数据恢复到没有重复值的表中。我将转储文件中的数据放入临时表中。现在我需要比较临时表和现有表的内容。之后,应该从临时表中添加原始表中不存在的任何行。

declare
table_name varchar(30);
poid_id0 au_account_t.poid_id0%type;
CURSOR row_pointer  is
SELECT MIN(au_account_t) as table_name,POID_ID0
FROM
(
SELECT 'au_account_t' as au_account_t, au_account_t.POID_ID0
FROM au_account_t
UNION ALL
SELECT 'au_account_t_temp' as au_account_t_temp, au_account_t_temp.POID_ID0
FROM au_account_t_temp
) tmp
GROUP BY POID_ID0
HAVING COUNT(*) = 1
ORDER BY POID_ID0;
begin
open row_pointer;
loop
fetch row_pointer into table_name,poid_id0;
EXIT WHEN row_pointer%notfound;
dbms_output.put_line(poid_id0);
insert into au_account_t(poid_id0)values (poid_id0); 
end loop;
close row_pointer;
end ;

我需要比较所有列而不仅仅是主键poid_id0,并在主表中插入整行。

1 个答案:

答案 0 :(得分:0)

您可以使用多列子查询来执行此任务,例如。

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO from temp_emp
where (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
not in (select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
 from emp)
相关问题