将一张表的部分字段数据迁移到另一张表(表结构不同)

ska168 2013-07-08 04:52:26
原来有部门,部门下面又产品,产品下面有产品文件,
现在需要将原来的部门移到另一个模块中作为大类,把对应的产品移过去作为子类,把产品文件移过去作为文章。
部门与大类表、产品与小类表、产品文件和文章表结构都是不一样的。主要是需要把整个结构移过去,部分字段是可以舍去的。需要用SQL需要怎么做?

部门表
CREATE TABLE EML_DEPAT
(
SEQID VARCHAR2(12) NOT NULL, --序列号
DEPAT_NAME VARCHAR2(50) NOT NULL, --部门名称
CREATE_TIME DATE , -- 记录创建时间
LAST_UPDATE_TIME DATE -- 最后更新时间
);
ALTER TABLE EML_DEPAT ADD CONSTRAINTS PK_EML_DEPAT PRIMARY KEY(SEQID);
产品表
CREATE TABLE EML_PRODUCT
(
SEQID VARCHAR2(12) NOT NULL, --序列号
PRODUCT_NAME VARCHAR2(100) NOT NULL, --产品名称
DEPAT_NUM VARCHAR2(12) NOT NULL , --所属部门
CREATE_TIME DATE , -- 记录创建时间
LAST_UPDATE_TIME DATE -- 最后更新时间
);
ALTER TABLE EML_PRODUCT ADD CONSTRAINTS PK_EML_PRODUCT PRIMARY KEY(SEQID);
产品文件表
CREATE TABLE EML_PRODUCT_FILE
(
SEQID VARCHAR2(12) NOT NULL, --序列号
FILE_NAME VARCHAR2(100) NOT NULL, --文件名称
PRODUCT_NO VARCHAR2(12) NOT NULL, -- 产品编号
CREATE_TIME DATE , -- 记录创建时间
LAST_UPDATE_TIME DATE -- 最后更新时间
);
ALTER TABLE EML_PRODUCT_FILE ADD CONSTRAINTS PK_EML_PRODUCT_FILE PRIMARY KEY(SEQID);

大类表
CREATE TABLE EML_MARKET_TYPE
(
TYPE_ID VARCHAR2(12) NOT NULL, --序列号
TYPE_NAME VARCHAR2(20) NOT NULL, --类型名称
OPER_ID VARCHAR2(15) NOT NULL, --最后修改人
STATUS CHAR(1) DEFAULT '0' NOT NULL, --状态
LAST_UPDATE_TIME DATE NOT NULL -- 最后更新时间
);
ALTER TABLE EML_MARKET_TYPE ADD CONSTRAINTS PK_EML_MARKET_TYPE PRIMARY KEY(TYPE_ID);

小类表
CREATE TABLE EML_MARKET_PROGRAM
(
PROGRAM_ID VARCHAR2(12) NOT NULL, --序列号
PROGRAM_NAME VARCHAR2(30) NOT NULL, --专栏名称
TYPE_ID VARCHAR2(12) NOT NULL, --所属类型
OPER_ID VARCHAR2(15) NOT NULL, --最后修改人
STATUS CHAR(1) DEFAULT '0' NOT NULL, --状态
LAST_UPDATE_TIME DATE NOT NULL -- 最后更新时间
);
ALTER TABLE EML_MARKET_PROGRAM ADD CONSTRAINTS PK_EML_MARKET_PROGRAM PRIMARY KEY(PROGRAM_ID);
文章表
CREATE TABLE EML_MARKET_ARTICLE
(
ARTICLE_ID VARCHAR2(12) NOT NULL, --序列号
PROGRAM_ID VARCHAR2(12) NOT NULL, --所属专栏
TITLE VARCHAR2(300) NOT NULL, --文章标题
SUBJECT VARCHAR2(300) NULL, --主题文章名称
STATUS CHAR(1) DEFAULT '0' NOT NULL, --状态
CREATE_TIME DATE NOT NULL,--创建时间
LAST_UPDATE_TIME DATE NOT NULL -- 最后更新时间
);
ALTER TABLE EML_MARKET_ARTICLE ADD CONSTRAINTS PK_EML_MARKET_ARTICLE PRIMARY KEY(ARTICLE_ID);

把部门的名称移到大类中,把对应产品的名称移到小类中,产品文件的名称移到文章表中做文章名。因为表的结构不一样,有些字段是不允许为空的,而且这个结构也需要移过来。所以感到比较困难。有人会做吗?
最后修改人之类的可以任填,就是数据间的对应关系需要保留。
...全文
1490 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shy315 2013-07-09
  • 打赏
  • 举报
回复
我的意思是建个测试环境,逐步转换,没理清不好一步到位。
ska168 2013-07-09
  • 打赏
  • 举报
回复
不能随意改表的结构的,难办就在这里。如果其他的都可以为空,就好吧了。
kongxv0001 2013-07-09
  • 打赏
  • 举报
回复
写个function,可以建几个中间表,把需要修改的源数据先放到中间表,处理完之后再插入到正式表,执行function,一步到位
shy315 2013-07-08
  • 打赏
  • 举报
回复
有外键约束之类的,先全部去掉。 试试insert into table1(col1,col2,col3) select value1,value2,value3 from table2能否满足。 或者先备份好所有数据,然后改变字段名看看。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧