加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer移植到Oracle

发布时间:2020-12-12 15:14:28 所属栏目:MsSql教程 来源:网络整理
导读:来源网址:http://www.cnblogs.com/yiping06993010/archive/2007/08/02/840220.html 转贴原因:以后会用或者会扩展 ? ? 公司有一个系统是基于SqlServer 2k,现在,应客户要求,移植到Oracle 10g数据库。代码的扩展极其easy,三下五除二,搞定。就是在将数据从S
列名SqlServer数据类型SqlServer长度Oracle数据类型column1bigint8??? NUMBER(19)column2binary50??? RAW(50)column3bit1??? NUMBER(2)column4char10??? CHAR(10)column5datetime8??? DATEcolumn6decimal9??? NUMBER(18)column7float8?BINARY_DOUBLEcolumn8image16??? BLOBcolumn9int4??? NUMBER(10)column10money8? NUMBER(19,4)column11nchar10? NCHAR(10)column12ntext16? NCLOBcolumn13numeric9?NUMBER(18)column14nvarchar50?NVARCHAR2(50)column15real4?BINARY_FLOATcolumn16smalldatetime4?DATEcolumn17smallint2?NUMBER(5)column18smallmoney4?NUMBER(10,4)column19sql_variant?BLOBcolumn20text16?CLOBcolumn21timestamp8?RAW(8)column22tinyint1?NUMBER(3)column23uniqueidentifier16?BLOBcolumn24varbinary50?RAW(50)column25varchar50?VARCHAR2(50)


Oracle 10g 转换为SqlServer 2k

Oracle列名Oracle数据类型SqlServer列名SqlServer数据类型SqlServer数据长度COLUMN1BINARY_DOUBLECOLUMN1float8COLUMN2BINARY_FLOATCOLUMN2real4COLUMN3BLOBCOLUMN3image16COLUMN4CLOBCOLUMN4ntext16COLUMN5CHAR(10)COLUMN5nchar10COLUMN6DATECOLUMN6datetime8COLUMN12NUMBERCOLUMN12numeric13COLUMN13NVARCHAR2(10)COLUMN13nvarchar10COLUMN14RAW(10)COLUMN14varbinary10COLUMN15TIMESTAMP(6)COLUMN15datetime8COLUMN16TIMESTAMP(6) WITH LOCAL TIME ZONECOLUMN16datetime8COLUMN17TIMESTAMP(6) WITH TIME ZONECOLUMN17datetime8COLUMN18VARCHAR2(10)COLUMN18nvarchar10COLUMN7INTERVAL DAY(2) TO SECOND(6)COLUMN7nvarchar30COLUMN8INTERVAL YEAR(2) TO MONTHCOLUMN8nvarchar14COLUMN9LONGCOLUMN9ntext16COLUMN10LONG RAWCOLUMN10image16COLUMN11NCLOBCOLUMN11ntext16

???? 我们在做数据库移植设计的时候,完全DIY,可以考虑设计可扩展组件完成这种数据库表、列等对应关系的转换工作,那么以后再做系统移植中数据导入时就一劳永逸了。现在也没有时间做这种工作,不过感觉这还是挺有意义的一项工作。??? 在转换过程中,出现了另一个问题,就是如果SqlServer 2k 中的表名含有小写,那么在导入到Oracle 10g后,需要修改表名,否则Sql语句会执行失败。(导入后表名多了引号) 比如SqlServer 2k有一个表test,导入到Oracle 10g后显示的表名仍然为test,但是如果你要查询test表中的数据时,按照正常情况下,你只用输入select * from test即可,可是现在却变成select * from "test"。通过Oracle 10g的维护系统进入修改表名时,表名显示为带有引号的-"test"。出现这个问题,因为表不是很多,所以我们将SqlServer 2k的表名都改为了大写,或者在Oracle中将表名改为大写,就ok了,需要注意这些细节。Oracle 10g导入到SqlServer 2k中没有出现问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

来源网址:http://www.cnblogs.com/yiping06993010/archive/2007/08/02/840220.html

转贴原因:以后会用或者会扩展

?

?

公司有一个系统是基于SqlServer 2k,现在,应客户要求,移植到Oracle 10g数据库。代码的扩展极其easy,三下五除二,搞定。就是在将数据从SqlServer 2k导入到Oracle 10g数据库中时出现了一些问题。刚开始采用的方案是把表结构和数据导入到Sql脚本中,然后在Oracle数据库中执行Sql脚本。这个过程涉及到数据库字段类型的转换问题,容易出错。后来采用使用SqlServer 2k的DTS 将数据从SqlServer中导入到Oracle 10g中。工作就这么搞定了,为了方便以后数据类型的转换,方便以后做针对不同数据库的Sql脚本,我把SqlServer 2k和Oracle 10g大部分数据类型都做了一下测试,当然现在只有SqlServer 2k和Oracle 10g数据对应关系。不对应关系如下:

SqlServer 2k转换为Oracle 10g

    推荐文章
      热点阅读