1.table_exists_action参数说明
使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。
而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:
1) skip:默认操作
2) replace:先drop表,然后创建表,最后插入数据
3) append:在原来数据的基础上增加数据
4) truncate:先truncate,然后再插入数据
注:使用append如果导出数据时 选择了 data only 则可能遇到
1.ORA-39152: Table "TUSER"."TAB1" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append
这个不用管 这是告诉你已经把导入数据添加到了该表
2.ORA-31693: Table data object "TUSER"."TAB1" failed to load/unload and is being skipped due to error:
ORA-00001: unique constraint (TUSER.PK_TAB1) violated
遇到这个问题 则是在说append添加导入数据时 违反了唯一性原则 导致主键冲突无法进行数据导入 此时如果数据库版本在11g及以上 可选择 加入data_options=skip_constraint_errors 处理 如果是10g 则可以选择使用truncate参数或replace参数
后面附上我的数据泵导入导出语句:
impdp pqss/pqss@localhost/orcl remap_schema=pqss:pqss dumpfile=EXPDP_PQSS20211026.DMP directory=dir_dp job_name=pqss table_exists_action=replace logfile=TEST.log data_options=skip_constraint_errors
@echo off
set dir_home=G:\EXPDP
set time=%date:~0,4%%date:~5,2%%date:~8,2%
setlocal enabledelayedexpansion
for /f "delims=" %%i in (%dir_home%\Name.txt) do (
expdp pqss/pqss@localhost/orcl tables='table_name' dumpfile=EXPDP_PQSS%time%.dmp directory=dir_dp logfile=EXPDP_PQSS.log
)
pause