[Oracle] Data Pump详细使用教程(3)- impdp
[Oracle] Data Pump详细使用教程(2)- expdp
http://www.zzzyk.com/database/201307/230731.html
导入模式
和导出模式一样,以下5种模式也是互斥的。
Full模式
设置Full=yes即可,如果没有DATAPUMP_IMP_FULL_DATABASE角色,只能导入到自己schema下的数据
Schema模式
设置Schema参数,语法如下
SCHEMAS=schema_name [,...]
下面这个例子导入hr数据到hr schema下
[plain]
> impdp hr SCHEMAS=hr DIRECTORY=dpump_dir1 LOGFILE=schemas.log
DUMPFILE=expdat.dmp
Table模式
设置Table参数,语法如下:
TABLES=[schema_name.]table_name[:partition_name]
如果没有指定schema_name,默认表示导入当前用户的schema下,如:
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp TABLES=employees,jobs
也可以导入指定的分区:
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp
TABLES=sh.sales:sales_Q1_2012,sh.sales:sales_Q2_2012
Tablespace模式
设置Tablespace参数,其语法如下:
TABLESPACES=tablespace_name [, ...]
下面是一个例子,要注意的是:这些要导入的tablespace必须已经存在,否则会导入失败。
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp TABLESPACES=tbs_1,tbs_2,tbs_3,tbs_4
Transpotable Tablespace模式
设置Transpotable_tablespace参数,其语法定义如下:
TRANSPORT_TABLESPACES=tablespace_name [, ...]
只导入表空间的元数据,数据文件需有在操作系统层面拷贝至本机服务器下,路径由Transport_datafiles指定,其语法如下:
TRANSPORT_DATAFILES=datafile_name
下面是一个具体例子:
DIRECTORY=dpump_dir1
NETWORK_LINK=source_database_link
TRANSPORT_TABLESPACES=tbs_6
TRANSPORT_FULL_CHECK=NO
TRANSPORT_DATAFILES='user01/data/tbs6.dbf'
导入过程中的过滤
和导出过程中的过滤类似,数据过滤用QUERY和SAMPLE,元数据过滤用EXCLUDE和INCLUDE。
主要参数说明
ACCESS_METHOD=[AUTOMATIC | DIRECT_PATH | EXTERNAL_TABLE | CONVENTIONAL]
定义导入方法,强烈建议采用默认设置AUTOMATIC,不要改动。
CONTENT=[ALL | DATA_ONLY | METADATA_ONLY]
定义只导入数据、元数据还是都要
DIRECTORY=directory_object
指定导入数据文件所在的文件夹
DUMPFILE=[directory_object:]file_name [, ...]
指定导入Dump文件名称,可用通配符%U匹配多个Dump文件
HELP=YES
impdp help=y 显示帮助信息
JOB_NAME=jobname_string
指定Job_name,一般默认即可
LOGFILE=[directory_object:]file_name
指定日志文件名
MASTER_ONLY=[YES | NO]
指定只导入master table,由于master table包含dumpfile的信息,这样就可以指定dumpfile里包含哪些数据。
PARALLEL=integer
指定导入时的并行度
PARFILE=[directory_path]file_name
指定参数文件
REMAP_DATA=[schema.]tablename.column_name:[schema.]pkg.function
导入时对数据进行修改,比如重新生成PK防止和原有的PK冲突等。
REMAP_DATAFILE=source_datafile:target_datafile
可以解决异构平台间文件命名规范不同的问题
REMAP_SCHEMA=source_schema:target_schema
这个参数很常用,可以让你导入到不同的schema中,如果target_schema不存在,导入时会自动创建,下面是一个例子:
> expdp system SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp
> impdp system DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp REMAP_SCHEMA=hr:scott
REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename
可以在导入时重命名表或分区,下面是一个例子:
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expschema.dmp
TABLES=hr.employees REMAP_TABLE=hr.employees:emps
REMAP_TABLESPACE=source_tablespace:target_tablespace
在导入时修改表空间名,下面是一个例子:
> impdp hr REMAP_TABLESPACE=tbs_1:tbs_6 DIRECTORY=dpump_dir1
DUMPFILE=employees.dmp
REUSE_DATAFILES=[YES | NO]
是否重用数据文件,默认为NO,一定要谨慎,一旦设为YES,原有同名的数据文件将被覆盖
SQLFILE=[directory_object:]file_name
如果指定该参数,则不真正执行导入,而是把导入时所需的DDL SQL写入到SQLFILE里。
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
SKIP leaves the table as is and moves on to the next object. This is not a valid option if the CONTENT parameter is set to DATA_ONLY.
APPEND loads rows from the source and leaves existing rows unchanged.
TRUNCATE deletes existing rows and then loads rows from the source.
REPLACE drops the existing table and then creates and loads it from the source. This is not a valid option if the CONTENT parameter is set to DATA_ONLY.