Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle:在迁移期间规范化数据_Oracle_Normalization_Data Migration - Fatal编程技术网

Oracle:在迁移期间规范化数据

Oracle:在迁移期间规范化数据,oracle,normalization,data-migration,Oracle,Normalization,Data Migration,我有一个包含大量重复数据的表,我想将其重构为3个表 目前的结构如下: meeting_desc meeting_date topic_desc ... meeting1,2/3/2009,abc meeting1,2/3/2009,efg meeting1,2/3/2009,xyz meeting2,4/5/2009,aaa meeting2,4/5/2009,bbb 当前_表中的数据如下所示: meeting_desc meeting_date topic_desc ... meetin

我有一个包含大量重复数据的表,我想将其重构为3个表

目前的结构如下:

meeting_desc
meeting_date
topic_desc
...
meeting1,2/3/2009,abc
meeting1,2/3/2009,efg
meeting1,2/3/2009,xyz
meeting2,4/5/2009,aaa
meeting2,4/5/2009,bbb
当前_表中的数据如下所示:

meeting_desc
meeting_date
topic_desc
...
meeting1,2/3/2009,abc
meeting1,2/3/2009,efg
meeting1,2/3/2009,xyz
meeting2,4/5/2009,aaa
meeting2,4/5/2009,bbb
我想创建一个会议表和一个主题表,其中PKs来自一个序列:

MEETING: 
  id
  meeting_desc
  meeting_date

TOPIC:
  id
  meeting_id
  topic_desc
我搞不懂的是如何将数据插入到新表中。我试过:

insert into MEETING select distinct 
  seq.nextval, meeting_desc, meeting_date from current_table

但这当然行不通。有没有一种简单的方法来规范化数据?

放置在子查询中的
不同的
应该可以工作:

SQL> INSERT INTO meeting
  2     SELECT seq.nextval, meeting_desc, meeting_date
  3       FROM (SELECT DISTINCT meeting_desc, meeting_date
  4               FROM current_table);

2 rows inserted
完成此操作后,您可以将新创建的表与旧表联接,以将生成的ID与子表关联:

SQL>   INSERT INTO topic
  2       SELECT m.id, topic_seq.NEXTVAL, ct.topic_desc
  3         FROM current_table ct
  4         JOIN meeting m ON (ct.meeting_desc = m.meeting_desc 
  5                            AND ct.meeting_date = m.meeting_date);

5 rows inserted