loader你是指sql loader吗?通常转库更常用的是exp/imp,那样就不需要考虑表的相关性。如果一定要用sql loader,我建议你在倒数据以前把所有表的外键disable掉,这样倒入数据的时候就不需要考虑数据相关性,倒入完成以后再把外键enable就可以。
解决方案 »
- dba_indexes和dba_ind_columns里面的索引数量不一样的,是怎么回事
- 关于FLASHBACK的一点思考
- .net 通过 commandtext=”rollback” 执行oracle回滚为何无效???????????????
- sql批量插入数据简单问题!!!
- 在日文系统下的ORACLE10如何显示中文
- 我用的是oracle 8.1.6,实例创建完成后,可以启动,但运行一段时间后,在把该实例关掉,服务无法启动,但在svrmgrl中可以手工启动,是什
- oo4o是什么?
- 请问那里有oracle9 lite下载阿???
- oracle9 for red advance server3.0
- 关于ORACLE的安装问题
- 创建触发器的问题,输入被截为1个字符?
- 请问Oracle的SQL能不能实现类似C语言的 ? 的功能
/
drop table ls_refers
/
create table ls_tables as
select t.table_name, pk.constraint_name pkey, 9999 as listorder
from user_tables t,
(select constraint_name,table_name from user_constraints where constraint_type='P') pk
where t.temporary='N'
and t.table_name = pk.table_name (+)
/
create table ls_refers as
select fk.table_name, fk.r_constraint_name
from user_constraints fk
where fk.constraint_type='R'
/
create index idx_ls_tables_1 on ls_tables(table_name)
/
create index idx_ls_refers_1 on ls_refers(r_constraint_name)
/declare
i number(3):=0;
begin
loop
i := i+1;
update ls_tables t set listorder=i
where t.listorder=9999
and not exists(select 1 from ls_refers r where r.r_constraint_name=t.pkey);
exit when SQL%ROWCOUNT=0;
delete ls_refers r
where exists(select 1 from ls_tables t where t.listorder=i and t.table_name=r.table_name);
end loop;
end;
/--按listorder的逆序,就是要写入的顺序;按listorder的顺序是要删除的顺序
select * from ls_tables order by listorder desc,table_name;