欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle转SqlServer

程序员文章站 2022-07-09 20:24:01
基础数据所对应的类型不同 在Oracle中有一些基础类型与Sqlserver中名字一样,但是所存储的数据格式不同,Date类型在Oracle中精确到秒,在Sqlserver中只能精确到分 表的结构 Oracle中所有的表都有一个共同的字段,rowid这是在物理上存在的,记录了每一条记录的行位置,ro ......

 基础数据所对应的类型不同

   在oracle中有一些基础类型与sqlserver中名字一样,但是所存储的数据格式不同,date类型在oracle中精确到秒,在sqlserver中只能精确到分

   表的结构          

    oracle中所有的表都有一个共同的字段,rowid这是在物理上存在的,记录了每一条记录的行位置,rownum 是逻辑上的,根据排序方式的不同会出现不同的rownum,因为oracle的这个特性,经常在进行一些crud操作的时候会通过rowid来进行,导致在转数据库的时候会遇到各种麻烦,所以我建议各位不管是使用哪一种数据库最好是使用标准sql,并且不要太依赖某种数据库的特性。我开始是想通过row_number()加with as 去代替rowid,但是总会出现一些奇怪的问题,你前一次查询的id,重新进入数据库操作的时候改变的是另外一条记录,最后的解决方式我把每一张表都添加上了rowid

    oracle的to_date,to_char方法

    在转oracle数据库的时候这两个方法出现了很多次,看他们的名字就知道是干什么的,sqlserver中没有这样的方法,但是有conver,cast方法这两个方法可以实现oacle两个方法的所有功能

    oracle的nvl方法可以用isnull代替

    在oracle中子查询语句可以有order by,而在sqlserver需要添加top()函数    

 

oracle比sqlserver的优势

    我个人觉得oracle的优势在他的图形用户界面,虽然长相不好,但却实用,如果有失误的操作还能够rollback,导出数据时也很方便,在把oracle数据迁移到sqlserver时只要关注两个数据库之间数据类型的差异,不用担心oracle的数据问题,可以一键查询提出成文件,而sqlserver操作起来反而复杂,我还没有找到导出sqlserver sql文件的方法。

数据库转换需要注意的几个点:

  1:基础数据之间的差异,在不同的数据中相同名字的数据类型可能存的值存在某些差异,我也没有弄清有哪些类型,但是这是一个需要注意的点

  2: 某些数据库独有特性在转换时要面向整体去设计

3:不同数据库所用sql也有不同,但总能找到替代的方法,一定要用心