在之前的工作中,我遇到了这么一个需求,需要将数据库内一千多个旧表按其原来表结构,重新创建对应的新表。然后对旧数据的进行处理后,存储新的数据。
不只是结构需要保持一致,还有用户、表空间、约束、备注等也需要一并带过去。如此一来,用“create table …… as select……”语句去创建,并不能把约束等,也保留过去,显然不符合要求。后来还是选择的用PL/SQL导出数据结构的方法。
不过这样这样处理又带来一个问题。要从源oracle数据库里,一共五六个用户的几万个表里面,人工挑选出这一千多张表,也是很费劲的一件事情。而且明显也不智能。
先看一下导出的表结构:
这里可以将其看作是一个格式化文本,每个创建表的语句都是以如下语句开始: