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

Posted 风清云淡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将MS SQL SERVER 数据库导入到ORACLE的坑相关的知识,希望对你有一定的参考价值。

将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

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

以上是关于将MS SQL SERVER 数据库导入到ORACLE的坑的主要内容,如果未能解决你的问题,请参考以下文章

自动将新数据从 MS Access 数据库导入 SQL Server

将 MS ACCESS 数据库表导入 SQL Server

MS ACCESS, VBA 将外部 MS Access 表导入 SQL server 表

我可以将 SQL Server (=MS SQL) 中的表导入 Python / Pandas 数据框吗?

使用 c# 将 MS Access 表数据添加到 SQL Server 表中

Sqoop Hive 字符串数据类型转 MS SQL Server 类型