美文网首页
sqlserver 转oracle

sqlserver 转oracle

作者: HALLOXIAOHONG | 来源:发表于2023-11-19 15:03 被阅读0次

一、转前说明

1、用sqlserver工具将sqlserver转为orace,可以完整保存表结构与内容

因为Oracle数据库的表名和字段名都是大写,如果在SqlServer数据库中是小写的话,转换后,使用表名或字段名的时候需要加上双引号(“”),所以在转换之前把 表名和字段名全部写成大写,方便使用。(ps:下注教程)

2、但如果末尾有一个分号;则在Oracle中直接就是一个错误

在Oracle中,分号';'仅在sqlplus中使用。在使用ODBC / JDBC,OLEDB等时,请不要在语句的末尾添加分号。

ORA-00911: 无效字符

3、部分数据库类型不支持,部分函数没有。

没有XML,数据类型。双精度浮点数字数据类型在DB2是DOUBLE,在Oracle是BINARY_DOUBLE
由于使用了一个工具导出的DOUBLE,直接转为了NUMBER(13),导致没有小数部分,导致了大量错误。
这几个函数YEAR,MONTH,DAY没有条件in中的数据有限制,否则ORA-01795: 列表中的最大表达式数为 1000

4、视图定义中表不能使用as。

create view ViewName
as
select a.HWD_User_FK,b.u_name from T_HRWxData as a join T_user as b on a.HWD_User_FK=b.u_id
如上的SQL在Server SQL,DB2中都可以使用,但在Oracle中不能使用,需要把as去掉

create view ViewName
as
select a.HWD_User_FK,b.u_name from T_HRWxData a join T_user b on a.HWD_User_FK=b.u_id

5、最大的问题是日期问题

select * FROM EAS.T_HRWxData where HWD_Date>='2016-04-14'如上的SQL,在SQL Server,DB2中可以,但在Oracle中是错误的,oracle不会字符串转为日期类型。

在Oracle可以修改为
select * FROM EAS.T_HRWxData where HWD_Date>=to_date('2016-04-14','yyyy-mm-dd')
包含小时的日期格式处理24小时
to_date('2016-03-06 13:12:09','yyyy-mm-dd hh24:mi:ss')
包含小时的日期格式处理12小时,如果时小时数是下午的13点就会出错
to_date('2016-03-06 01:12:09','yyyy-mm-dd hh:mi:ss')

二、SQL server数据库转Oracle数据库(数据库端)教程
  1. 右击数据库,任务→导出数据


    1.jpg
  1. 弹出下面界面,直接下一步


    2.jpg
  1. 选择数据源:数据源不用改,服务器名称(localhost),可以选择Windows身份和SQL server身份验证,然后点击→下一步


    3.jpg
  1. 然后选择目标:目标选择(Oracle provider for OLE DB),选择后点击→属性


    4.jpg
  1. 数据连接属性:选择→使用指定的用户名和密码→填写需要使用的用户名和密码(勾选允许保存密码)→测试连接(连接成功)→确定→下一步


    5.jpg
  1. 指定表复制或查询:选择第一个→下一步


    6.jpg
  1. 选择源表和源视图:全选→编辑映射!


    7.jpg
  1. 传输设置:选择你想要创建到的目标架构名称(Oracle用户名)
    (注:下面的两个选项,第一个是:当你所选的目标内,含有要创建的表名就删除旧表重新创建新表;第二个不必选择)


    8.jpg
  1. 修改表中的字段数据类型(Integer→number, NVARCHAR2→varchar2,datatime→data)修改完后点击→确定
    注:如果多个表的话,每个表都要修改数据类型


    9.jpg
  1. 若果红线框内有警告标示,就需要把蓝色框内的勾选处选中,绿色框内不用关注,弄好后点击→下一步


    10.jpg
  1. 继续点击→下一步


    11.jpg
  1. 点击→完成,最后就会复制表内容到Oracle数据库中,如果最后又错误信息的话,我遇到过几种(1.数据类型转换错误;2.Oracle数据库中没有复制的表,而选中了“删除并重新创建表”;3.字段的字符长度比数据长度小)


    12.jpg

相关文章

网友评论

      本文标题:sqlserver 转oracle

      本文链接:https://www.haomeiwen.com/subject/yqvqjhtx.html