从sqlserver向oracle8迁移的技术实现方案

上传人:新** 文档编号:487404837 上传时间:2022-09-08 格式:DOC 页数:49 大小:117.01KB
返回 下载 相关 举报
从sqlserver向oracle8迁移的技术实现方案_第1页
第1页 / 共49页
从sqlserver向oracle8迁移的技术实现方案_第2页
第2页 / 共49页
从sqlserver向oracle8迁移的技术实现方案_第3页
第3页 / 共49页
从sqlserver向oracle8迁移的技术实现方案_第4页
第4页 / 共49页
从sqlserver向oracle8迁移的技术实现方案_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《从sqlserver向oracle8迁移的技术实现方案》由会员分享,可在线阅读,更多相关《从sqlserver向oracle8迁移的技术实现方案(49页珍藏版)》请在金锄头文库上搜索。

1、从SQL SERVER 向ORACLE 8迁移的技术实现方案 数据库端SQL语法的迁移以下为常用的SQL语法迁移,包括数据类型、ID列向SEQUENCE迁移、表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)、游标、存储过程、函数、触发器、常用SQL语法与函数几个方面,考虑SQLSERVER的实际情况,没有涉及ORACLE特有的PACKAGE、EXCEPTION等。在以下的描述中,将SQLSERVER的TRANSACT-SQL简称为T-SQL。在ORACLE中,其语法集称为PL/SQL。数据类型的迁移、ORACLE端语法说明在ORACLE中,分析其数据类型,大致可分为数字、

2、字符、日期时间和特殊四大类。其中,数字类型有NUMBER;字符类型有CHAR与VARCHAR2;日期时间类型只有DATE一种;除此之外,LONG、RAW、LONGRAW、BLOB、CLOB和BFILE等数据类型都可视为特殊数据类型。、SQLSERVER端语法说明在SQLSERVER中,参照上面对ORACLE的划分,数据类型也大致可分为数字、字符、日期时间和特殊四大类。数字类型又可分为精确数值、近似数值、整数、二进制数、货币等几类,其中,精确数值有DECIMAL(P,S)与NUMERIC(P,S);近似数值有FLOAT(N);整数有INT、SMALLINT、TINYINT;二进制数有BINARY

3、(N)、VARBINARY(N);货币有MONEY、SMALLMONEY。字符类型有CHAR(N)与VARCHAR(N)。日期时间类型有DATETIME、SMALLDATETIME。除此之外,BIT、TIMESTAMP、TEXT和IMAGE、BINARYVARING等数据类型都可视为特殊数据类型。、从SQLSERVER向ORACLE的迁移方案比较ORACLE与SQLSERVER在数据类型上的不同,当从SQLSERVER向ORACLE迁移时,可以做如下调整:SQLSERVERORACLE数字类型DECIMAL(P,S) NUMBER(P,S)NUMERIC(P,S) NUMBER(P,S)FLO

4、AT(N) NUMBER(N)INTNUMBERSMALLINTNUMBERTINYINTNUMBERMONEYNUMBER19,4SMALLMONEYNUMBER19,4字符类型CHAR(N) CHAR(N)VARCHAR(N) VARCHAR2(N)日期时间类型DATETIMEDATESMALLDATETIMEDATE其它TEXTCLOBIMAGEBLOBBITNUMBER(1)方法:公司原系统中的Money用于金额时转换用number(14,2);用于单价时用number(10,4)代替;ID列向SEQUENCE迁移、SQLSERVER端语法说明在SQLSERVER中,可以将数据库中的某

5、一字段定义为IDENTITY列以做主键识别,如:jlbhnumeric(12,0)identity(1,1)/*记录编号字段*/CONSTRAINTPK_tbl_examplePRIMARYKEYnonclustered(jlbh)/*主键约束*/在这里,jlbh是一个ID列,在向具有该列的表插入记录时,系统将从1开始以1的步长自动对jlbh的值进行维护。、ORACLE端语法说明但在ORACLE中,没有这样的ID列定义,而是采用另一种方法,即创建SEQUENCE。如:/*-1、创建各使用地区编码表-*/droptableLT_AREA;createtableLT_AREA(area_idnum

6、ber(5,0)NOTNULL,/*地区编码*/area_namevarchar2(20)NOTNULL,/*地区名称*/constraintPK_LT_AREAPRIMARYKEY(area_id);/*-2、创建SEQUENCE,将列area_id类ID化-*/dropsequenceSEQ_LT_AREA;createsequenceSEQ_LT_AREAincrementby1/*该SEQUENCE以1的步长递增*/startwith1maxvalue99999;/*从1开始,最大增长到99999*/*-3、实际操作时引用SEQUENCE的下一个值-*/insertintoLT_ARE

7、A(area_id,area_name)values(SEQ_LT_AREA.NEXTVAL,深圳);insertintoLT_AREA(area_id,area_name)values(SEQ_LT_AREA.NEXTVAL,广州);insertintoLT_AREA(area_id,area_name)values(SEQ_LT_AREA.NEXTVAL,北京);/*-4、新插入连续三条记录后,下一条语句运行后,上海地区的area_id为4-*/insertintoLT_AREA(area_id,area_name)values(SEQ_LT_AREA.NEXTVAL,上海);、从SQLS

8、ERVER向ORACLE的迁移方案根据以上分析,当从SQLSERVER向ORACLE迁移时,可以做如下调整:1、去掉建表语句中有关ID列的identity声明关键字;2、创建SEQUENCE,将此SEQUENCE与需类ID化的列对应;3、在INSERT语句中对相应列引用其SEQUENCE值:SEQUENCENAME.NEXTVAL实际上,处理以上情况在ORACLE中采用的方法为对有自动增长字段的表增加一插入前触发器(具体资料见后“触发器”一节),如下:CREATEORREPLACETRIGGERGenaerateAreaIDBEFOREINSERTONLT_AREAFOREACHROWSele

9、ctSEQ_LT_AREA.NEXTVALINTO:NEW.IDFROMDUAL;BEGINENDGenaerateAreaID;GenaerateAreaID实际上修改了伪记录:new的area_id值。:new最有用的一个特性-当该语句真正被执行时,:new中的存储内容就会被使用。所以系统每次都能自动生成新的号码。表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)、SQLSERVER端语法说明有如下SQLSERVER语句:/*-创建employee表-*/IFEXISTS(SELECT1FROMSYSOBJECTSWHERENAME=employeeANDTYPE=U)

10、DROPTABLEemployeeGOCREATETABLEemployee(emp_idempid/*empid为用户自定义数据类型*/*创建自命名主键约束*/CONSTRAINTPK_employeePRIMARYKEYNONCLUSTERED/*创建自命名CHECK约束*/CONSTRAINTCK_emp_idCHECK(emp_idLIKEA-ZA-ZA-Z1-90-90-90-90-9FMoremp_idLIKEA-Z-A-Z1-90-90-90-90-9FM),/*CHECK约束说明:EachemployeeIDconsistsofthreecharactersthatrepres

11、enttheemployeesinitials,followedbyafivedigitnumberrangingfrom10000to99999andthentheemployeesgender(MorF).A(hyphen)-isacceptableforthemiddleinitial.*/fnamevarchar(20)NOTNULL,minitchar(1)NULL,lnamevarchar(30)NOTNULL,ss_idvarchar(9)UNIQUE,/*创建唯一性约束*/ job_idsmallintNOTNULLDEFAULT1,/*设定DEFAULT值*/job_lvlt

12、inyintDEFAULT10,/*设定DEFAULT值*/*Entryjob_lvlfornewhires.*/pub_idchar(4)NOTNULLDEFAULT(9952)/*设定DEFAULT值*/REFERENCESpublishers(pub_id),/*创建系统命名外键约束*/*Bydefault,theParentCompanyPublisheristhecompanytowhomeachemployeereports.*/hire_datedatetimeNOTNULLDEFAULT(getdate(),/*设定DEFAULT值*/*Bydefault,thecurrentsystemdatewillbeentered.*/CONSTRAINTFK_employee_jobFOREIGNKEY(job_id)REFERENCESjobs(job_id)/*创建自命名外键约束*/)GO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号