oracle IMPDP导入的时候,能自动把之前表中的数据都删除吗?

以前IMP的时候,是实现自己手动删除,在导入,这个IMPDP能实现自动删除后再导入吗?

另外,有没有SQL能自动循环所有表,把数据删除?

不用删除,可以自动覆盖掉了。如下参考:

1.有两种导入方法:IMP和impdp。

2.IMP导入的时候:如果已经存在此表,会告诉你无法创建此表,因为表已经存在。同时使用参数full=yignore=y那就是全部导入,把dmp里的所有数据插入到表里面。

3.数据备份,使用命令:expuser/userfile=d:\user.dmpfull=y恢复时,使用命令:impuser/userFILE=d:\user.dmpfromuser=usertouser=userfull=yignore=y。

4.IMPDP导入的时候:用参数table_exists_action=replace进行删除后覆盖table_exists_action选项。

5.数据备份,使用命令:expdpuser/userdirectory=dump_dirdumpfile=schema.dmp

logfile=schema.logschemas=userjob_name=exp_user_schema恢复时。

注意事项:

Oracleimpdp是一个标准版本和企业版本的问题。标准版本中不支持某些函数。最好用相同的版本重新安装企业版本,包括导入较小的版本。如果必须使用当前库,则可以在导出时添加version=11.2.0。如果未能将其更改为10.2.0,请重试。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-01
可以的。IMP请看参数说明。
写个脚本块实现数据删除(千万不要用于做坏事)如:
declare
cursor c is select 'truncate table '||OWNER||'.'||OBJECTNAME as ss from dba_objects where OWNER= 'XXX' and OBJECTNAME LIKE 'T_%';
cSQL Varchar2(4000);
begin
for r in c loop
cSQL := r.ss;
execute immediate cSQL;
end loop;
end;
第2个回答  2012-03-19
drop user username cascade;就把这个用关联的所有表都删除了,然后重新建个用户,
第3个回答  推荐于2017-11-24
rows=n 是不导入数据吧。。。而且是imp的命令,lz问的是impdp的命令
应该用
TABLE_EXISTS_ACTION
Action to take if imported object already exists.
Valid keywords: (SKIP), APPEND, REPLACE and TRUNCATE.
另外推荐一篇非常好的在线文档.exp/imp的命令和expdp/impdp的对应关系

How Data Pump Export Handles Original Export Parameters
How Data Pump Import Handles Original Import Parameters
http://download.oracle.com/docs/cd/E11882_01/server.112/e16536/dp_legacy.htm#SUTIL959追问

请问一下,下面这段话是什么意思?
应该用
TABLE_EXISTS_ACTION
Action to take if imported object already exists.
Valid keywords: (SKIP), APPEND, REPLACE and TRUNCATE.

追答

就是说,在你的impdp命令后面加参数TABLE_EXISTS_ACTION=TRUNCATE 就可以删除目标库里的表的原来的数据再从dump文件里导入新的数据。其他的选项的意思,看

http://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_import.htm

追问

谢谢了,我现在有个问题,想咨询一下,添麻烦了,不好意思。
impdp命令后面加参数TABLE_EXISTS_ACTION=TRUNCATE ,这个明白了,
但我现在有这么一个问题,比如说备份的时候是3个表,A,B,C,其中,A,B表是全表备份,C表是有条件备份。
导入的时候,我光想把A和B表存在的数据删除,C表的既存数据不删和这一次的累积,如果这样的话?加上上面那个参数实现不了吧?

追答

可以分2次导入吧,每次导不同的表 impdp应该还有2个参数叫 include 和 exclude,你可以查下

追问

感谢你的回答,
还想了解一下,expdp,带条件备份表的时候,不支持关联查询吗?比如像下边这样的SQL
,要备份的表名假设为AAA
query=“where exsits (select 1 from (select a from BBB) tmp where AAA.a = tmp.a )”

另外,比如说EXPDP的时候,指定tables=A,IMPDP的时候,指定tables=B,表A和B表结构一样,可以吗?
又添麻烦了,不好意思哈~

追答

第一个问题, 我没试过,不知道,没听说不行
第二个,好像不可以。impdp有remap选项,可以把用户A的数据导入到用户B里面,但是没有听说可以remap一个表的。
追问超过3条要扣分的,你另开一个问题问问吧

本回答被提问者采纳
第4个回答  2011-12-01
Oracle 自己的命令:
imp user=youuser/youpasswd file=youuser.dmp rows=n
相似回答