今天把ORACLE服务器已搭载好,所以需把之前项目的数据导至新服务器中。
原数据库是在本机,数据库类型为SQLSERVER2000 SP4。
我用的方法是直接用 SQLSERVER2000带的数据导出功能实现的,但在数据导入后出现了一个很奇怪的问题,如下图:
导入至ORACLE后,进入SQLPLUS,键入SELECT * FROM TAB查看所有数据表,
可以列出刚导入的所有表,但继续查询此表SELECT * FROM T_USERS,却提示此表不存在,但通过ORACLE客户端连接数据库同样可以列出刚导入的数据表,
一时间还真不知道错在哪。围绕这个问题我和另位一位同事折腾了差不多一个上午(我们太菜了,大家不要笑话), 不过还好最终解决了问题,问题出在数据表的命名上,在oracle数据库建表时系统都会将表名转换为大写(即使你在sqlpuls建表时输入的的小写的表名),而在sqlserver中,我们的表名是小写的,在数据导入时没有考虑到这些情况,数据是导入成功了,但表不能访问,所以在数据导入时要将表重命名为大写。
下面就把此次sqlserver2000数据导出至oracle9i的全过程图解一次,供大家参考,写的不好大家不要扔鸡蛋哦。
我就干脆贴图吧,很清楚,文字我就少写了。
第一步:进入sqlserver2000的企业管理器,打开需导出数据的数据库,列出所有数据表,任意选择一个表按右键。
第二步:
第三步:
第四步:
第五步:
这里需说明一下,上面两步是创建一个ODBC数据源,指向你的目的数据库,即ORACLE。数据源怎么配置这里就不说了,网上资料很多。注意一定要测试连接成功哦。
第六步:
第七步:
这里再说明一下:
1、这里选择你要导出的表,按转换栏的“...”可以进行相应的导出设置,如果ORACLE数据库中没有这些表,这里用默认就行了,系统将在ORACLE中自动创建相应的表并COPY所有记录至表中。如果ORACLE数据库中已经有这些表的表结构并且已有数据,可以设置为对表格进行数据追加。
2、如果你的表名是小写的就一定要改成大写的啦,不然导入的表数据在ORACLE就不能访问了,另外一个方法就是在导入数据的第一步之前先把要导出的数据表重命名为大写表名。
第八步:
第九步:
第十步:
好啦,大功告成!
另外,通过PLSQL也可实现从ODBC源导入数据至ORACLE数据库,大家可以试试。
大家还有什么好的数据导入导出工具和方法可以一起共享,交流一下。