imp 工具导入数据库,把带有外键的表的外键约束自动删除了,如何避免这个问题呀 如题,我用exp从我的机器上把整个数据库导出来,然后在另一个机器上(这个机器单独安装了oracle)使用imp导入,但是有外键的表,只要插入数据时有违反的就自动把那个外键约束删掉了,如何来避免这个问题呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 具有外键约束的用户数据迁移办法(exp/imp)在我们只需要迁移一部分表数据,而不是整个用户,同时又希望得到整个用户的所有非用户数据的结构,此时如果遇到具有外键约束的用户数据,我们总是因为外键约束导致数据导入时出现错误,导致丢失部分数据,乃至无法导入数据,今想出如下办法,通过5个步骤即可解决此问题。相信很多环境都需会有类似的需求。以前说的(http://bigboar.itpub.net/post/8411/58613)并没有解决外键约束数据的问题,次解决。==================================================需求:1)迁移某oracle数据库用户下所有非用户数据的结构(即包括:table,index,procedure等等除了表数据以外的所有该用户的结构).2)迁移该用户下的指定的一部分表的用户数据。测试环境:solaris9+oracle817 to redhat2.1+oracle817==================================================按下列步骤(一共5步),即可成功:导出:1)按用户模式,exp导出该用户的所有非用户数据的结构,文件为:wapmail_nodata.dat$exp wapmail/passwd@wapmail file=wapmail_nodata.dat rows=n2)按用户模式,指定表清单导出该用户指定的表清单里的表数据:wapmail_list_table_data.dat$exp wapmail/passwd@wapmail file=wapmail_list_table_data.dat parfile=table.listtable.list文件内容,用cat显示如下:$cat table.listtables=(areano, blacklist, cdma_segarea,.....zone)==================================================导入:3)按用户模式,imp导入wapmail_nodata.dat,指定INDEXES=n和CONSTRAINTS=n,不导入索引和约束。$imp wapmail/wapmail@maildb file=wapmail_nodata.dat INDEXES=n CONSTRAINTS=n4)按用户模式,imp导入wapmail_list_table_data.dat里的数据,只指定ignore=y。$imp wapmail/wapmail@maildb file=wapmail_list_table_data.dat ignore=y5)按用户模式,imp导入wapmail_nodata.dat,只指定ignore=y。$imp wapmail/wapmail@maildb file=wapmail_stru.dat ignore=y 此时还有一个问题,JOB任务无法导入,因为在导出文件里得到的是具体的job_id了。此时重新提交JOB即可。除此外,问题都解决了。==================================================PS:wapmail_list_table_data.dat好处是只导出了部分表数据,同时满足需求,导出文件没有整个用户数据大,利于转移。 写的一触发器在oracle11下好好的oracle10出问题 断号的新问题 求一个oracle导入dmp的脚本(windows) oracle事务中多条sql处理一条记录时。。。。 如何修改表中某一个字段名?rename出错! 求救啊!!!! 查询结果问题啊 菜鸟问题,100分,紧急!!! 对于您是小问题,对于我大问题★★★ 在存储过程中用传递参数形成sql语句 Oracle listener中 ipc性能问题 Oracle组合分区中如何查询子分区信息??? 关于MERGE编译错误,请帮助解决
在我们只需要迁移一部分表数据,而不是整个用户,同时又希望得到整个用户的所有非用户数据的结构,此时如果遇到具有外键约束的用户数据,我们总是因为外键约束导致数据导入时出现错误,导致丢失部分数据,乃至无法导入数据,今想出如下办法,通过5个步骤即可解决此问题。
相信很多环境都需会有类似的需求。以前说的(http://bigboar.itpub.net/post/8411/58613)并没有解决外键约束数据的问题,次解决。==================================================需求:
1)迁移某oracle数据库用户下所有非用户数据的结构(即包括:table,index,procedure等等除了表数据以外的所有该用户的结构).
2)迁移该用户下的指定的一部分表的用户数据。测试环境:
solaris9+oracle817 to redhat2.1+oracle817==================================================
按下列步骤(一共5步),即可成功:
导出:1)按用户模式,exp导出该用户的所有非用户数据的结构,文件为:wapmail_nodata.dat
$exp wapmail/passwd@wapmail file=wapmail_nodata.dat rows=n2)按用户模式,指定表清单导出该用户指定的表清单里的表数据:wapmail_list_table_data.dat
$exp wapmail/passwd@wapmail file=wapmail_list_table_data.dat parfile=table.listtable.list文件内容,用cat显示如下:
$cat table.list
tables=
(areano,
blacklist,
cdma_segarea,
.....
zone)
==================================================
导入:
3)按用户模式,imp导入wapmail_nodata.dat,指定INDEXES=n和CONSTRAINTS=n,不导入索引和约束。
$imp wapmail/wapmail@maildb file=wapmail_nodata.dat INDEXES=n CONSTRAINTS=n
4)按用户模式,imp导入wapmail_list_table_data.dat里的数据,只指定ignore=y。
$imp wapmail/wapmail@maildb file=wapmail_list_table_data.dat ignore=y
5)按用户模式,imp导入wapmail_nodata.dat,只指定ignore=y。
$imp wapmail/wapmail@maildb file=wapmail_stru.dat ignore=y 此时还有一个问题,JOB任务无法导入,因为在导出文件里得到的是具体的job_id了。此时重新提交JOB即可。
除此外,问题都解决了。==================================================
PS:
wapmail_list_table_data.dat好处是只导出了部分表数据,同时满足需求,导出文件没有整个用户数据大,利于转移。