[Oracle] Data Pump 详细使用教程(3)- impdp

[Oracle] Data Pump 详细使用教程(1)- 总览

[Oracle] Data Pump 详细使用教程(2)- 总览

[Oracle] Data Pump 详细使用教程(3)- 总览

[Oracle] Data Pump 详细使用教程(4)- 总览

[Oracle] Data Pump 详细使用教程(5)- 总览

导入模式

和导出模式一样,以下5种模式也是互斥的。

Full模式


设置Full=yes即可,如果没有 DATAPUMP_IMP_FULL_DATABASE角色,只能导入到自己schema下的数据 

Schema模式


设置Schema参数,语法如下
SCHEMAS=schema_name [,...]

下面这个例子导入hr数据到hr schema下
> 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.

你可能感兴趣的:(oracle,Data,impdp,pump)