DMP文件转CSV文件全过程记录
- 1.安装oracle对应版本及pl/sql developer
- 2.查看dmp文件的导出方式
- 3.文件转换
- 3.1 Cmd 命令创建表空间
- 3.2 pl/sql developer 创建用户
- 3.2 DMP文件导入
- 3.4 导出数据
1.安装oracle对应版本及pl/sql developer
下载软件之前建议先执行第22222222步
这里安装的是oracle 11.2.0.1.80和pl/sql developer 13,安装方法可百度搜索。
2.查看dmp文件的导出方式
若为expdp方式可返回安装任意版本(使用EXPDP|IMPDP替代EXP|IMP备份数据相关内容:https://wenku.baidu.com/view/37ad6c0bbed5b9f3f90f1cc7.html)
打开文件,查看文件头部信息。文件过大时:
① linux命令截取信息,参见https://blog.csdn.net/wuxbeyond/article/details/12048293
② 使用 EmEditor 打开文本。(由于EmEditor 中没有可读取文本的代码,文本会乱码,但不影响获取我们所需要的信息)。
- 使用EmEditor打开文本
GPSBUSHIS:导出用户名
SYS_EXPRRT_TABLE_02:说明原文件为expdp的导出方式(exp导出标记信息待查),导入数据库版本无强制要求
IBMPC/WIN_NT64-9.1.0:导出数据库的系统信息,如果为Linux环境,不影响。
ZHS16GBK:导出文件编码
10.02.00.05.00:导出文件版本
3.文件转换
3.1 Cmd 命令创建表空间
1.Cmd 命令登录sqlplus
代码格式:>sqlplus system/密码
sqlplus system/1234567Zym
2.创建表空间,分两个,一个是临时数据库,另一个是主要数据库
- 临时数据库的创建
CREATE TEMPORARY TABLESPACE DB_TEMP
TEMPFILE 'H:\app\Admin\oradata\DB_TEMP.DBF'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
- 主要数据库的创建
CREATE TABLESPACE DB_DATA
LOGGING
DATAFILE 'H:\app\Admin\oradata\DB_DATA.DBF'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
- 修改表空间,增加数据文件,防止扩展不足报错
alter tablespace DB_DATA add datafile 'H:\app\Admin\oradata\DB_DATA1.DBF'
size 1024M autoextend on next 512M maxsize unlimited;
Tips:
1)表空间的路径可自选。
2)复制的时候注意不要有空格
3.2 pl/sql developer 创建用户
登录用户名为SYSTEM,密码为安装时设置的密码,登陆方式为SYSDBA
3.2 DMP文件导入
1.给予用户权限,Cmd登录进入SQL
grant create session to MX;
grant create table to MX;
grant unlimited tablespace to MX;
grant dba to MX;
2.本地磁盘文件创建
F:\data201801_\GPS数据\HIS_P201906 位置创建 “DMPDIR”文件夹
3.创建Directory目录,并授予用户权限
Sqlplus system/1234567Zym;
CREATE OR REPLACE DIRECTORY DMPDIR AS 'F:\data201801_\GPS数据\HIS_P201906';
grant read, write on directory DMPDIR to MX;
4.导入数据
重新打开一个cmd窗口
回到第2步文件信息查看的地方
GPSBUSHIS:导出用户名
10.02.00.05.00:导出文件版本
这里的文件版本是10.02.00.05.00,数据库版本为11.02.00.01.00
Ⅰ、若查询所得导出文件版本低于所安装的Oracle版本,可用以下代码:
格式:
impdp 新建用户名/密码@ORCL directory= 创建的磁盘目录 dumpfile= dmp文件名 full=y REMAP_SCHEMA=导出用户名:新建用户名
REMAP_TABLESPACE=导出用户名:新建的主表空间名称
Ⅱ、若查询所得导出文件版本高于所安装的Oracle版本,可用以下代码:
格式:
impdp 新建用户名/密码@ORCL directory= 创建的磁盘目录 dumpfile= dmp文件名 version=dmp文件的版本 full=y REMAP_SCHEMA=导出用户名:新建用户名
REMAP_TABLESPACE=导出用户表空间名称(导出用户名):新建的主表空间名称
两者差别:是否有version=dmp文件的版本命令:低→高可省略,高→低不可不可不可不可不可省略。
执行(此处为了显示结构每一个模块另起了一行):
impdp XM/XM111@ORCL
directory= DMPDIR
dumpfile= HIS_P201906.DMP
version=10.02.00.05.00
full=y
REMAP_SCHEMA= GPSBUSHIS:XM
REMAP_TABLESPACE= GPSBUSHIS:DB_DATA;
× 报错:表空间不存在
√ 解决方案:
将所有不存在的表空间添加至REMAP_TABLESPACE后面,格式为:
REMAP_TABLESPACE=(表空间1:用户表空间名,表空间2:用户表空间名)
例如:
REMAP_TABLESPACE=(XMGJBUS:DB_DATA,XMHIS_MINMAX:DB_DATA)
经过多次报错表空间不存在,添加表空间后,最终导入成功的代码如下所示:
impdp MX/1234567Zym@ORCL directory= DMPDIR dumpfile= HIS_P201906.DMP version=10.02.00.05.00 full=y REMAP_SCHEMA= GPSBUSHIS:MX
REMAP_TABLESPACE=(XMGJBUS:DB_DATA,XMHIS_MINMAX:DB_DATA,
XMHIS_01:DB_DATA,XMHIS_02:DB_DATA,XMHIS_03:DB_DATA,XMHIS_04:DB_DATA,XMHIS_05:DB_DATA,XMHIS_06:DB_DATA,XMHIS_07:DB_DATA,XMHIS_08:DB_DATA,XMHIS_09:DB_DATA,XMHIS_10:DB_DATA,XMHIS_11:DB_DATA,XMHIS_12:DB_DATA,XMHIS_13:DB_DATA,XMHIS_14:DB_DATA,
XMHIS1_01:DB_DATA,XMHIS1_02:DB_DATA,XMHIS1_03:DB_DATA,XMHIS1_04:DB_DATA,XMHIS1_05:DB_DATA,XMHIS1_06:DB_DATA,XMHIS1_07:DB_DATA,XMHIS1_08:DB_DATA,XMHIS1_09:DB_DATA,XMHIS1_10:DB_DATA,XMHIS1_11:DB_DATA,XMHIS1_12:DB_DATA,XMHIS1_13:DB_DATA,
XMHIS1_14:DB_DATA;)
(不一定每一个文件都是相同表空间名,目前采用办法为从导出用户表空间开始尝试,根据报错依次添加)
-
第一个文件成功导入, 导入第二个文件时候显示已经有此表(或者此其他),更改ORACLE表的名称(或者删除此部件)即可,或者参考impdp导入时将指定表更名相关内容:https://blog.csdn.net/e_wsq/article/details/78374020,如果导入第二个文件时报错
× 报错:ORA-01691:xxx无法通过8192(在表空间XXX中)扩展
√ 解决方案:
① 增加数据文件(未尝试):
alter tablespace 表空间名 add datafile
'F:\Db\db_1.DBF' size 30G autoextend on;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69901925/viewspace-2636545/
② 创建新的表空间,本次导入每一个GPS数据文件均创建了一个表空间,没有再报过错。可尝试第一种方法
CREATE TABLESPACE DB_DT
LOGGING
DATAFILE 'H:\app\Admin\oradata\DB_DT.DBF'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
alter tablespace DB_DT add datafile 'H:\app\Admin\oradata\DB_DT1.DBF'
size 1024M autoextend on next 512M maxsize unlimited;
impdp MX/1234567Zym@ORCL directory= DMPDIR
dumpfile= HIS_P201906.DMP version=10.02.00.05.00 full=y remap_table= GPSBUSHIS.HIS_P201906: HIS_P201906 REMAP_SCHEMA= GPSBUSHIS:MX REMAP_TABLESPACE=(XMGJBUS:DB_DATA,XMHIS_MINMAX:DB_DATA,XMHIS_01:DB_DATA,XMHIS_02:DB_DATA,XMHIS_03:DB_DATA,XMHIS_04:DB_DATA,XMHIS_05:DB_DATA,XMHIS_06:DB_DATA,XMHIS_07:DB_DATA,XMHIS_08:DB_DATA,XMHIS_09:DB_DATA,XMHIS_10:DB_DATA,XMHIS_11:DB_DATA,XMHIS_12:DB_DATA,XMHIS_13:DB_DATA,XMHIS_14:DB_DATA,XMHIS1_01:DB_DATA,XMHIS1_02:DB_DATA,XMHIS1_03:DB_DATA,XMHIS1_04:DB_DATA,XMHIS1_05:DB_DATA,XMHIS1_06:DB_DATA,XMHIS1_07:DB_DATA,XMHIS1_08:DB_DATA,XMHIS1_09:DB_DATA,XMHIS1_10:DB_DATA,XMHIS1_11:DB_DATA,XMHIS1_12:DB_DATA,XMHIS1_13:DB_DATA,XMHIS1_14:DB_DATA);
3.4 导出数据
两种方式:
- 导出为.sql文件(可批量导出)
2. 出为csv文件,只能一个一个来