一、关于SQL标准和扩展
目前主流关系数据库管理系统(包括Oracle和SQLServer)均支持遵守ANSI SQL89标准。
基于通用SQL标准(ANSI SQL89标准),大部分数据库厂商对SQL语言进行扩展,
具有较大影响力的SQL扩展有Transact-SQL和PL/SQL
Transact-SQL(T-SQL)
SQLServer和Sybase Adaptive Server(ASE)系列数据库的SQL语言引擎属于T-SQL;
但自SQLServer version 4.2后,SQLServer和Sybase对T-SQL支持出现分歧,
目前已形成Microsoft T-SQL和 Sybase T-SQL两种标准。
PL/SQL(Procedural Language/SQL,过程化SQL语言)
Oracle的SQL语言引擎属于PL/SQL,MySQL目前不支持 PL/SQL
关于Transact-SQL语言和PL/SQL语言
同JAVA,C/C++一样,两者属于编程语言;
可在tiobe编程语言排行榜单查询到(Transact-SQL在第10位,PL/SQL在第23位,2014年10月)
二、应用从Oracle迁移至SQLServer
目前情况是,该应用(某应用)同数据库的所有交互均集中在SQL层面;
因此,应用的数据库迁移的主要工作是将已存在的PL/SQ标准的SQL转换成Microsoft T-SQL标准的SQL;
完成这个转换的前提是要清楚上述两种SQL标准的差异。
总结一下,该应用中涉及的两种SQL标准的差异有:
特征项 Microsoft T-SQL PL/SQL
字符连接 使用加号+作为连接符 使用||符号作为连接符
外连接 left join和right join left join和right join,或者(+)方式
系统时间 getdate() 关键字SYSDATE
时间格式化 convert()结合replace() TO_CHAR()
根据null取值 isnull() NVL()
根据条件取值 CASE WHEN语句 CASE WHEN语句,或者DECODE()
自动字符填充 REPLICATE()结合right()或left() RPAD()或LPAD()
去除前后空字符 ltrim()和rtrim() trim()
字符子串 substring() substr()
两种SQL标准还有其他很多差异,这里只列出该应用涉及的部分。
应用迁移时,sql转换的典型例子
1.取系统当前日期时间,并格式化成yyyymmddhh24miss的字符串
PL/SQL:TO_CHAR(SYSDATE,'yyyymmddhh24miss')
Microsoft T-SQL:replace(replace(replace(convert(varchar,getdate(),120),'-',''),':',''),' ','')
2.对于数值类型的SEQ_NO字段,其值不会超过6位数
若SEQ_NO为null,则赋值为0,否则取其值
将SEQ_NO转化为6位数字的字符串,不足6位左边补0
PL/SQL:LPAD(NVL(SEQ_NO, 0), 6, '0')
Microsoft T-SQL:right(REPLICATE('0', 5)+CONVERT(VARCHAR, isnull(SEQ_NO, 0)), 6)
3.对于字符类型的flag字段
若flag='y',则表达式取值为1
若flag='n',则表达式取值为0
其他情况,表达式取值为-1
PL/SQL:DECODE(flag, 'y', 1, 'n',0,0) value
Microsoft T-SQL(或PL/SQL):(CASE WHEN flag='y' THEN 1 WHEN flag='n' THEN 1 ELSE -1 END) value
该应用中,Microsoft T-SQL和PL/SQL都支持的特征项:
字母小写转换: LOWER()
字母大写转换: UPPER()
取最小值: MIN()
取最大值: MAX()
is null条件判断: select * from tableA where cloumnA is null
相关推荐
oracle资料库资料迁移到MS-sql(sqlserver)工具,版本为6.0 如果连oracle资料库提示以下错误时, Unable to find specified provider. Error occurred while establishing connection to Oracle server. You might ...
用java实现从SQLSERVER到ORACLE的数据库迁移
此工具用于从oracle数据库迁移至sqlserver,从官网下载的!还不够50个字啊啦啦啦啦啦啦啦
利用 Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具) ,将oracle数据库迁移数据到SQL server详解。
从oracle数据库迁移至SQLserver数据库,官方工具好用
要将 Oracle DML 语句和 PL/SQL 程序迁移到 SQL Server 时,请按下列步骤执行: 1. 验证所有 SELECT、INSERT、UPDATE 和 DELETE 语句的语法是有效的。进行任何必要的修改。 2. 把所有外部联接改为 SQL-92 标准外部...
将SqlServer数据库迁移到oracle通过sqldeveloper工具进行迁移,具体的迁移步骤可以参考我博客:https://blog.csdn.net/menghuannvxia/article/details/81092429 自己已经执行成功,希望可以帮到大家
详细介绍了从SQL Server迁移大批量数据到Oracle的方法和具体的操作步骤。
从sql server 迁移数据到oracle 的步骤
该程序可将ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段,方便快捷。
从Sql Server迁移数据到Oracle.docx
绝对好用,本人已用过,已迁过几个大型数据库,只要一两分种时间,不会用的再找我
数据库迁移指导SQL SERVER 2008向ORACLE 11G
实现了数据从SQL Server向Oracle数据库的迁移
sqldeveloper里,选择工具→首选项→数据库→第三方JDBC驱动程序,选择该文件夹里的.jar,可进行迁移。
针对sql server 数据迁移至oracle,尤其是表中存二进制文件的数据迁移
要将 Oracle DML 语句和 PL/SQL 程序迁移到 SQL Server 时,请按下列步骤执行: 1. 验证所有 SELECT、INSERT、UPDATE 和 DELETE 语句的语法是有效的。进行任何必要的修改。 2. 把所有外部联接改为 SQL-92 标准外部...
用来迁移oracle数据库到sqlserver2008中,含licence
本文主要结合之前一次oracle迁移达梦的项目,将碰到的问题以及一系列踩过的坑列举出来供大家参考,数据库版本是达梦7。(本文中涉及到的部分对象名已用sch1,tab1等方式替换) 1、整体情况 迁移过程中失败任务数低于5%...
详解了sqlserver和oracle数据库之间的数据迁移