oracle 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,请重试。
写个脚本块实现数据删除(千万不要用于做坏事)如:
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;
应该用
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
imp user=youuser/youpasswd file=youuser.dmp rows=n