将MS SQL SERVER 数据库导入到ORACLE的坑

时间:2021-08-21 00:01:18

将MS SQL SERVER 数据库导入到ORACLE的坑

通过Sql Server Management Studio将SQL SERVER数据库导入ORACLE过程遇到的坑

1.Sql Server Management Studio安装目录空格问题,结果报 ORA-06413: 连接未打开
现在的电脑都是安装64位操作系统,Sql Server Management Studio都是安装在C:\Program Files (x86)\Microsoft SQL Server,因此使用Sql Server Management Studio
连接ORACLE时都会报ORA-06413: 连接未打开错误

解决办法:Sql Server Management Studio的导出功能也是调用DTS,因此可能将dts的exe及文件复制到一个自定义没有空格的目录下,直接用DTSWizard.exe进行导出
dts的DTSWizard.exe及其它文件源路径
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn

2.ORACLE的数据源或主机字符串写法
(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = xxx.xx)))

HOST:ORACLE服务器的IP
SERVICE_NAME:ORACLE中数据库名字(注意是全名)

3.导入数据不允许插入NULL问题
SQL SERVER 中的'',NULL在ORACLE中都是NULL,因此在SQL SERVER 表中不可为NULL,数据为''在ORACLE都是导入不进去的

解决办法:调整ORACLE中表的是否为NULL属性或改变SQL SERVER表中''的值为其它

4.导入成功后,在ORACLE查询表,报“表或视图不存在”错误
这是因为ORACLE表名默认都是大写格式的,如果是小写表名,则在导入时给表名加了“”,可能通过 SELECT *FROM “Mytable"来查询到

解决办法
在导入时,修改创建表的表名为全大写形式

5.使用odp.net 及odp.net ef连接到oracle 9i 报ORA-01017: invalid username/password; logon denied
odp.net及odp.net ef支持最低的oracle数据库版本为oracle 10g.2

解决办法
换用更高版本的数据库