将dmp格式的文件导入到本地数据库中由于用户和表空间不同,所以在导入的过程中出现很多问题
现在将解决办法分享给大家。
背景:需要将一个数据库中的部分表格导入到本地数据库,由于数据量过大,因此采用导出成dmp的形式,但是在插入的过程中出现了问题,由于用户和表空间不同出现了很多问题。
在使用plsql进行导入的时候,不知道什么原因,数据没有导入进去,只建立了表格,因此采用toad,使用toad进行导入的时候设置了fromuser和touser,用户的问题得到解决,但是由于找不到指定的表空间,所有的数据包括大字段类型全部导入进了user表空间下,由于之前不知道user表空间大小有限,在导入表的时候,导入了一半的时候控制台突然报错:
IMP-00064: 导出已截断 LOB 的定义
IMP-00028: 上一个表的部分导入已回退: 回退 88423 行
当时在网上查的大部分都说是表空间不足的原因,因此查看表空间大小,想对user表空间进行扩容,DBA查看表空间后说,user表空间存放的用户信息,不能存放这些数据,可以存放到其他表空间中。
具体解决办法:
先建表,再导数
1.先在目标数据库中建立表结构,指定表空间和用户
2.再通过imp命令导入dmp文件,注意只导出表的数据,不要表结构了在后面加上 data_only=Y
具体示例:
imp username/password@127.0.0.1:11521/bluedb file=H:\Desktop\testdmp\s_test.dmp fromuser=user1 touser=user2 data_only=y