oracle数据导入导出

发布时间 2023-12-01 11:05:29作者: teiperfly

导入表结构

 

创建目录

create or replace directory DUMP_DIR as '/oradump';

查询
select * from dba_directories;

expdp

  • 普通例子
    userid="/as sysdba"
    directory=DUMP_DIR
    SCHEMAS=USER1,USER2
    dumpfile=expdp_%U.dmp
    logfile=expdp.log
    parallel=8
    COMPRESSION=ALL
    exclude=statistics,grant

  • 只导出表结构
    userid='/ as sysdba'
    dumpfile=exp_coms_metadata_%U.dmp
    logfile=exp_coms_metadata.log
    directory=DUMP_DIR                      --可通过 select * from dba_directories 查询directory名称对应的目录
    SCHEMAS=USER                           --指定导出的 schema
    PARALLEL=4                                   --并行,导结构都是默认一个线程处理,这里并行其实不起作用,并行都是用在导数据
    COMPRESSION=ALL                      --压缩
    CONTENT=METADATA_ONLY       --只导表结构

  • 只导出数据
    userid='/ as sysdba'
    dumpfile=exp_data_%U.dmp
    logfile=exp_coms_data.log
    directory=DUMP_DIR
    SCHEMAS=USER
    PARALLEL=8
    COMPRESSION=ALL
    CONTENT=DATA_ONLY     --只导表数据
    filesize=4G                           --限制单个dmp文件大小

  • 只导出部分表数据
    userid='/ as sysdba'
    dumpfile=exp_data_%U.dmp
    logfile=exp_data_20230121.log
    directory=DUMP_DIR
    COMPRESSION=ALL
    PARALLEL=8
    CONTENT=DATA_ONLY
    exclude=statistics,grant
    TABLES=(USER.TABLE1,USER.TABLE2)


impdp

  • 导入表结构,排除主键、索引
    userid="/ as sysdba"
    directory=DUMP_DIR
    dumpfile=exp_metadata_%U.dmp
    logfile=imp_metadata.log
    cluster=n                                           --开并行的时候最好加上,详解见百度
    table_exists_action=replace             --表若存在则REPLACE重建,参数说明:APPEND 追加 、TRUNCATE 清空表数据 、默认参数为SKIP 略过
    transform=segment_attributes:n      --忽略表空间转换,使用用户默认表空间
    exclude=index,constraint                 --导入大表若不排除排除主键、索引,在导入数据时会特别慢

  • 导入表数据
    userid="/ as sysdba"
    directory=DUMP_DIR
    dumpfile=exp_data_%U.dmp
    logfile=imp_data.log
    cluster=n
    parallel=8
    table_exists_action=truncate
    data_options=skip_constraint_errors     --跳过主键冲突错误,若不加table_exists_action=truncate项时最好加此选项

  • 将主键索引导出到sql文件
    userid="/ as sysdba"
    directory=DUMP_DIR
    dumpfile=exp_metadata_%U.dmp
    logfile=imp_metadata_ddl.log
    cluster=n
    parallel=4
    include=index,constraint
    sqlfile=index_ddl.sql             --指定生成sql文件名

#sqlfile文件生成后需要修改并行数量:sed -i 's#PARALLEL 1#PARALLEL 16#g' common_index_ddl.sql ;
#若表空间不一致还需要处理一把
#最后在数据库里执行index_ddl.sql文件创建主键、索引