Oracle专用技术性能调优:oracle避免约束带来的导入数据解决方案(4)
时间:2013-10-31
来源:Oracle认证考试网 浏览次数:393
【华夏培训网:中国教育培训第一门户】
Oracle导入数据其 实很简单,但是如果数据存在约束:如主外键、主键约束、唯一约束,可能给数据导入带来很大的麻烦。比如主外键
Oracle导入数据其 实很简单,但是如果数据存在约束:如主外键、主键约束、唯一约束,可能给数据导入带来很大的麻烦。比如主外键,如果批量导入数据,是难于指定导入的先后顺 序的,相信有不少入门级朋友们,会遇到跟我一样的问题。因此,为了节省大家的宝贵时间,特此分享自己的研究成果。 个人解决方案为:在导入过程中,先导入表结构,再禁用约束,其次导入数据,最终启用约束即可。其核心就是禁用和启用约束过程的创建。具体步骤如下:
1.导出(分为2步):
导出结构、导出数据 –只导出表结构 $exp devsem/devsem@pcmdb file=d:\struct.dmp log=d:\struct.log rows=n; –导出数据 $exp devsem/devsem@pcmdb file=d:\data.dmp log=d:\data.log ;
2.导入结构 –导入表结构 $imp file=d:\struct.dmp log=d:\imp.log full=y;
3.编写过程
001
CREATE OR REPLACE PROCEDURE MANAGE_USER_CONSTRAINTS(OPERATION VARCHAR2,
002
FK BOOLEAN DEFAULT TRUE,
003
PK BOOLEAN DEFAULT TRUE,
004
UK BOOLEAN DEFAULT TRUE) IS
005
ST VARCHAR2(255);
006
CURSOR R IS
007
SELECT TABLE_NAME, CONSTRAINT_NAME
008
FROM USER_CONSTRAINTS
009
WHERE CONSTRAINT_TYPE = 'R';
010
011
CURSOR P IS
012
SELECT TABLE_NAME, CONSTRAINT_NAME
013
FROM USER_CONSTRAINTS
014
WHERE CONSTRAINT_TYPE = 'P';
015
016
CURSOR U IS
017
SELECT TABLE_NAME, CONSTRAINT_NAME
018
FROM USER_CONSTRAINTS
019
WHERE CONSTRAINT_TYPE = 'U';
020
021
BEGIN
022
IF UPPER(OPERATION) IN ('DROP', 'DISABLE') THEN
023
Oracle认证