impdp方式向oracle数据库导入表【详解,持续更新使用记录】

一、 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参数

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库提供了expdp和impdp命令用于备份和恢复数据库。这两个命令的使用方式如下: 1. expdp命令 expdp命令用于备份Oracle数据库,它能够将某个schema或整个数据库导出到一个二进制文件中。具体命令格式如下: ``` expdp username/password@connect_string DIRECTORY=directory_name DUMPFILE=dumpfile_name.dmp SCHEMAS=schema_name ``` 其中: - `username/password@connect_string`:指定连接Oracle数据库的用户名、密码和连接字符串。 - `DIRECTORY=directory_name`:指定备份文件的目录。 - `DUMPFILE=dumpfile_name.dmp`:指定备份文件的名称。 - `SCHEMAS=schema_name`:指定要备份的schema名称,多个schema可以用逗号分隔。 执行命令后,Oracle数据库会将指定的schema或整个数据库导出到一个二进制文件中。 2. impdp命令 impdp命令用于恢复Oracle数据库,它能够将之前导出的二进制文件导入数据库中。具体命令格式如下: ``` impdp username/password@connect_string DIRECTORY=directory_name DUMPFILE=dumpfile_name.dmp SCHEMAS=schema_name ``` 其中: - `username/password@connect_string`:指定连接Oracle数据库的用户名、密码和连接字符串。 - `DIRECTORY=directory_name`:指定备份文件所在的目录。 - `DUMPFILE=dumpfile_name.dmp`:指定备份文件的名称。 - `SCHEMAS=schema_name`:指定要恢复的schema名称,多个schema可以用逗号分隔。 执行命令后,Oracle数据库会将指定的schema或整个数据库从备份文件中恢复出来。 需要注意的是,expdp和impdp命令需要在Oracle数据库服务器上执行,而不是在客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值