oracle使用impdp导入dmp文件_impdp导入命令详解

oracle使用impdp导入dmp文件_impdp导入命令详解IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件

oracle使用impdp导入dmp文件_impdp导入命令详解"

一、 Expdp 方式从oracle数据库导出表

-- 创建目录语句
create or replace directory bl_data_backups as 'D:\blDataBackups';

-- 导出的dos命令
Expdp springboottest/springboottest@orcl02 directory=bl_data_backups dumpfile=springbot_test_1125.dmp 

二、impdp方式向oracle数据库导入表

理一下思路,便于后面再次使用:

1.创建数据库实例(impdp一般用于数据迁移,将dmp包导入到新的库中)

创建数据库实例
1.开始 -> Oracle - OraDB19Home1 -> Database Configuration Assistant ->创建数据库 
2.输入自己设置的口令(我一般123456好记),需要的话设置下字符集,我一般用ZHS16GBK
3.然后一直下一步就OK

2.创建表空间

--初始SIZE 512M 不够用时autoextend on NEXT 512M
-- 创建表空间
CREATE TABLESPACE TS_GOLDWEB
    DATAFILE 'D:\tools\goldWebTableSpace\ts_goldweb2402.dbf'
    SIZE 512 M 
    autoextend on NEXT 512 M;

-- 创建临时表空间
CREATE TEMPORARY TABLESPACE GOLDWEB_TEMP
    TEMPFILE 'D:\tools\goldWebTableSpace\ts_goldweb2402_temp.dbf'
    SIZE 512M
    autoextend on NEXT 512M;


-- 删除临时表空间
DROP TABLESPACE temp_tablespace INCLUDING CONTENTS AND DATAFILES;

-- 查看某表归属于哪个用户
SELECT * FROM DBA_TABLES WHERE TABLE_NAME = 'tablename';

-- 查询用户所在表空间 用户名要大写
select default_tablespace from dba_users where username='登录用户';

-- 查看表空间下有多少用户,tablespace_name表空间 的名字一定要大写 
select distinct s.owner from dba_segments s where s.tablespace_name ='TMS21';  

3.创建角色

-- 创建用户 goldweb 
-- 默认在表空间DEFAULT TABLESPACE TS_GOLDWEB
-- 默认在临时表空间GOLDWEB_TEMP
CREATE USER GOLDWEB IDENTIFIED BY GOLDWEB DEFAULT TABLESPACE TS_GOLDWEB TEMPORARY TABLESPACE GOLDWEB_TEMP;

4.给角色赋权限

-- 登录sys或system给用户授权(系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户))
GRANT CONNECT, RESOURCE, DBA TO GOLDWEB;

-- 修改用户初始密码,此处密码设置为goldweb
ALTER USER goldweb IDENTIFIED BY goldweb;
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构;
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构;
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。

5.创建需要的目录

create or replace directory DATA_PUMP_DIR as 'D:\workSpace\xpadg_2402';

6.组装impdp的dos命令

例子:
IMPDP goldweb/goldweb@ORCL,DIRECTORY = DATA_PUMP_DIR DUMPFILE=goldweb_X16_1.dmp,goldweb_X16_2.dmp,goldweb_X16_3.dmp LOGFILE=IMPGOLDWEB_LOG.log SCHEMAS = GOLDWEB REMAP_SCHEMA=GOLDWEB:GOLDWEB REMAP_TABLESPACE=TS_GOLDWEB:TS_GOLDWEB,GDINDSP:GDINDSP

1.缩减:
IMPDP pcfdb/pcfdb@pcfdb,DIRECTORY = DATA_PUMP_DIR_1 DUMPFILE=XPADGO20220606.dmp LOGFILE=IMP0624_LOG.log SCHEMAS = xpadgo REMAP_SCHEMA=xpadgo:pcfdb REMAP_TABLESPACE=TS_XPADGO_DATA:TS_pcfdb

2.拆析:
IMPDP goldweb/goldweb@ORCL    -- 用户名/密码@数据库实例
DIRECTORY = DATA_PUMP_DIR     -- directory="需要被导入的dmp文件存放的位置"
DUMPFILE=goldweb_aft_20210202_203354_1.dmp,  -- directory中的dmp文件名字,逗号分隔
		goldweb_aft_20210202_203354_2.dmp,	 -- directory中的dmp文件名字,逗号分隔
		goldweb_aft_20210202_203354_3.dmp    -- directory中的dmp文件名字,逗号分隔
LOGFILE=IMPGOLDWEB.LOG    -- 导出过程产生的日志文件名字
SCHEMAS = GOLDWEB         -- 旧用户
REMAP_SCHEMA=GOLDWEB:GOLDWEB    -- 旧用户名:新用户名
REMAP_TABLESPACE=TS_GOLDWEB:TS_GOLDWEB,   -- 旧表空间:新表空间
				GDINDSP:GDINDSP  -- 多个表空间



## 第二次遇到了日志文件路径不正确的问题,所以直接指定日志目录:
goldweb@goldweb DIRECTORY = DATA_PUMP_DIR DUMPFILE=GOLDWEB_2401.dmp LOGFILE=DATA_PUMP_DIR:dumplog.log characterstes=ZHT32EUC SCHEMAS = GOLDWEB REMAP_SCHEMA=GOLDWEB:GOLDWEB REMAP_TABLESPACE=TS_GOLDWEB:TS_GOLDWEB;
其中:LOGFILE=DATA_PUMP_DIR:dumplog.log

7.直接打开CMD执行impdp命令

1.直接CMD打开输入命令,而不是sqlplus / nolog
2.IMPDP命令语句不能有换行符 每一项用空格分开

8.后记

2023/12/191.这次有个impdp按上面命令导成功了,但是好多表没有导进来,就结束了。不知道怎么回事,于是用了按表空间导入的方式,好了
impdp goldweb/goldweb@goldweb tablespaces=TS_GOLDWEB DIRECTORY = DATA_PUMP_DIR DUMPFILE=GOLDWEB_2401.dmp

2.这次还遇到的问题是,输出的log日志中文乱码,开头命令输入后显示:
已在 ZHT32EUC 字符集和 AL16UTF16 NCHAR 字符集中完成導入
已在 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中完成導出

搜了下是说客户端和服务端字符集不匹配,但是感觉很麻烦,等我摸透了再说吧

-- 查看数据库字符集
select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';

三、IMP和IMPDP的区别

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

exp导出:
exp ECAS/ECAS@ORCLYL file=D:\dmp\ecasDMP\ecas_20220530.dmp owner=XPADGO buffer=8192000 log=D:\dmp\ecasDMP\ecas_20220530_exp.log

如果是IMP导入,语句应该为:
imp username/password@SID file=XXX.dmp fromuser=XXX touser=XXX tables=(XXX,XXX)

其中,fromuser若为多个表空间的话,使用()将其括起来:fromuser=(a,b);

touser参数仿fromuser参数;

若只导入一部分表,使用tables参数,用()括起要导入的表;如果想全部导入,不需要指定tables参数

今天的文章oracle使用impdp导入dmp文件_impdp导入命令详解分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/80007.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注