需要导入dmp数据到mysql上。
一开始的时候,使用navicat oracle导入。发现不能导入,不支持imp导入。
然后,经过一番摸索(一天 ),找到了导入的方法。
dmp是Oracle的导出文件格式
它有两种导出方式:传统export(exp)导出和DataPump Export(expdp)导出。
分别对应两种导入方式:imp和impdp。
第一步,安装Oracle获取相关的工具。sql plus等。方便操作。
第二步,创建新的用户来存储导入的数据。(记得创建用户,这坑了我不少时间)
以上两步都可以w3的教程找到。w3cschool-oracle
第三步,使用imp命令导入,imp sysdba/password@localhost/orcl file=D:\import.dmp log=D:\import.log fromuser=导入的数据库名称 touser=新创建的用户名
命令的参数解析一下:sysdba就是带有登录名的账号,password就是对应的密码,file是dmp的路径,log是日志文件(有必要加上),fromuser就是导出时候的用户名(报错的时候可以看到),touser就是你新创建的用户用来接收数据的。
百度上,很多命令都是imp 用户名/密码@实例名 file=导入的dmp文件路径 full=y ignore=y。执行的时候,就会发生以下错误:
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 BASE 的对象导入到 OT(新建的用户名)
. 正在将 DATA(导入的数据库名称) 的对象导入到 DATA(导入的数据库名称)
"ALTER SESSION SET CURRENT_SCHEMA= "DATA""
IMP-00003: 遇到 ORACLE 错误 1435
ORA-01435: 用户不存在
IMP-00000: 未成功终止导入
所以,要把DATA添加到fromuser参数中,同时去掉full=y ignore=y(忽略错误是不合理的)(同样也是花了很多时间找博客)。
最后,几秒钟就把数据导进去了。