使用SQL语句进行数据迁移之二(by quqi99)

                                               使用SQL语句进行数据迁移之二(by quqi99)


作者:张华 发表于:2007-12-03  ( http://blog.csdn.net/quqi99 )

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。

 

 

      做了一个应用程序,可是用户提出了修改意见,并且修改幅度很大,改动了数据库,不想写程序做数据迁移,研究了下使用SQL语句进行数据迁移的全过程。 

数据库的更动:
ü         以前没有部门,将部门表挪用成了分类表;
ü         并且在建议表中新增了与分类表的关联category
1、  备份226上的数据: (226: sys/managerasop)
Exp lyb/passwd$1@asopdb _172.17.1.226  tables=(bumen,function,role,role_function,userinfo,user_bumen,user_role,yijian) file=f:/lyb.dmp 
使用SQL语句进行数据迁移之二(by quqi99)_第1张图片
以后操作失败时,恢复数据库如下:
使用SQL语句进行数据迁移之二(by quqi99)_第2张图片
2、 增加分类表,与在意见表中增加分类字段。
1)连接数据库
Connect lyb/passwd$1@oracledb;
2)创建分类表
  CREATE TABLE  CATEGORY (
ID        NUMBER(9) NOT NULL,
NAME   VARCHAR2(32),
ORDER1  NUMBER(9),
LOCAL  VARCHAR2(5),
CONSTRAINT PK_Vocation PRIMARY KEY (id)
);
   3)在yijian表中增加category字段
     Alter table yijian add category NUMBER(9);
3、将bumen表的数据迁移到category表
Insert into category(id,name,order1,local) (select id,bumen,order1,local from bumen);
Commit;
4、将yijian表中bumen表字段的值写到category字段中(因为以前没有部门,将部门表挪用成了分类表)
Update yijian y1 set category=(select bumen from yijian y2 where y1.id=y2.id);
Commit;
1、  将yijian表中的bumen字段的值置为0。(因为以前没有部门,将部门表挪用成了分类表,现在有部门,给它初值)
Update yijian set bumen=0;
 

你可能感兴趣的:(sql,数据库,function,user,table,insert)