看到一句话,台湾的IT畅销书作者侯捷说的,“记忆最好的方式是发表”,很受启示,现在开始,多记录一些学习和思想变化的轨迹吧。

      因为项目的关系,公司上了ORACLE的数据库,今天现学现卖写写如何从SQL SERVER 导出数据至ORACLE,以SQL SERVER 2005和ORACLE 10G 为例。

      必备的条件

      1:)能连到SQL SERVER和ORACLE,也就是要有SQL SERVER企业管理器,并且装上了连接ORACLE的驱动。

      2:)有数据库建模的工具,PowerDesigner


      实际上SQL SERVER 是提供数据导出至其他数据源包括ORACLE,EXCEL等等,在可以连接到ORACLE的情况下,我们可以在想导出表数据的数据库上右键选择“任务”-“导出数据”分别填上源,目的数据库链接信息,再选择要导数据的表,如果不去指定一个已有的表,SQL SERVER会用SQL语句来创建一个表,然后导出数据到这个表,OK,打开PL/SQL DEVELOPER,OK数据已经导进来了,并且SQL会做一些数据类型上的转换。
  
      这是最简单的方法,并且很直观,但是有一个问题,SQL导入创建表的时候并没有创建主键,外键,约束等等,手工去添加又很麻烦,这里我用PowerDesigner来生成建表的SQL 语句,在PD下建立SQL 的 物理数据模型,将想导出的数据库反向出来,然后建立ORACLE 的物理数据模型,将反向出来的表复制到ORACLE的物理数据模型中,用SQL 查看,调整建表的语句,我的感觉最好是通过工具来调整表信息,避免出错。主要要改的地方有 数据库的用户,数据列的类型。

     调整好在ORACLE中建表语句后,在PL/SQL DEVELPER中执行建表语句,然后使用上面的SQL 导出数据的方法,注意这个时候可以选择要导进的表,SQL会自动向其中追加数据,也可以将建表的语句复制到SQL 的导出数据中覆盖SQL SERVER的建表SQL语句,然后进行导出。

      也可以通过采用SQL 迭代的方式生成大量INSERT INTO的语句来导出数据,这样也比较灵活,需要手工用SQL代码来更改一些东西。

     另外在网上看了下,也有用ORACLE的透明网关的方法,可能还有别的可行办法,实践过来再来写写。