最近课题组在和某航务管理局合作完成一个模拟仿真项目,对方发来某地一年的AIS数据,以DMP格式呈现,大小足有100多G。对于这批数据的处理首先需将其还原至数据库中,并以CSV文件格式导出,此项任务最终分配给了笔者。在笔者着手完成的过程中,几天几夜,着实踩过不少坑。因此在此记录全过程以方便后来者。

众所周知,DMP文件(.dmp)通常来源于Oracle数据库,属于一种备份文件存储格式。询问合作方了解到这批数据产自Oracle 11g,对此笔者也是第一次接触。故而只得是走一步踩一步的坑。

1.安装阶段

第一阶段主要是安装Oracle11g以及操作客户端pl/sql developer,年少无知的我安装在了个人PC机(4G内存)。参照网上的安装步骤介绍一步步操作,在Oracle11g安装的最后一步通常教程会指示你修改口令设置,对sys、system、scott的密码进行修改。随后在打开pl/sql developer时就是用此时设置的系统管理员(sys/system)密码登录的。

2.导入阶段初踩坑

第一次尝试导入我的脑海中并没有系统管理员身份和用户身份的概念,因为原先使用MySQL都是一锅端使用root,故而最初阶段使用system导入出了很多问题。参考网上的博客,我打算使用pl/sql developer的Import Tables功能导入。界面如下:

From User和To User都好填,下方的DMP文件选择也没问题,点击Import后在Log中提示缓冲区大小不够。

经过多次加大缓冲区大小数值,总算是没问题了,但随即提示缺少表空间VMS。何为表空间?我的理解就是存储数据库的空间,需要预先在硬盘中开辟。于是我上网搜了一下,原来除了创建表空间外还需创建用户。

有趣的是我一开始是将表空间的创建位置设定在磁盘的一个任意位置,故而当我再次尝试导入时报了一堆错误。于是我开始认为pl/sql developer的导入可能有问题,开始尝试用命令行的方式导入。

按照网上说的步骤和命令一步步下来还是报了很多奇怪的错误。这时我已几近崩溃。回归pl/sql developer,当我删除重新创建表空间,创建用户时,这次放在了正确的位置,此时终于是没有问题了。但显然导入DMP文件的速度异常缓慢,整个电脑卡死,如瘫痪一般,这时我意识到个人PC机根本带不动Oracle。

3.导入阶段再踩坑

课题组为了完成这项导入导出工作专门安排在服务器配置了Windows Server2019操作系统,其内存,硬盘容量都是绰绰有余。于是我再次在服务器安装Oracle11g和pl/sql developer。这里顺便提一下,因为现在是疫情期间,因此只能用远程控制软件向日葵来远程操作服务器,我们无法直接将本机的安装包和数据传到服务器,因此不得不选择借助百度网盘上传再下载传输。Windows Server2019因为是新装,IE浏览器非常多的问题,竟无法下载。多次查询后才发现是Windows Defender以及IE的下载功能未开启,相比Chrome,IE真的坑的一批。

安装完成后,使用pl/sql developer进行导入,立即给我来了个闪退问题。当我点击Import时,出现进程命令行一闪而过,查看Log则提示finish。我简直不敢相信自己的眼睛,竟然这么快。我以为我成功了,查看Tables时发现里面有一大堆表,也不知哪个是数据表。这里需要说明,我这次登录是使用我创建的用户,同时数据库用的是orcl,模式是Normal(后来用SYSDBA一个样)。第二天我打电话问合作方的工程师了解到数据表的名称为AISDYNAMIC,然而我并不能找到这张表,瞬间懵逼。

当我上网查询为什么会闪退时,大佬们给了一些解决方法,但我只记得了一句话:这些都是pl/sql developer的灵异问题,建议改用命令行。搞了半天还是要用命令行。

使用命令行首先需要设置表空间的自动增长,这就需要使用alter命令。但我运行时每每都会报错,查询之下才发现,这篇博客忽略了告诉读者需要给用户赋予DBA权限,使用grant命令即可。修改完成后即可用imp导入,接下来问题就来了。

首先抛出我最后调试完毕的完整imp命令:

imp lhp/1234 file=D:\BaiduNetdiskDownload\201904\AISDYNAMICCLOG20190402.dmp full=y ignore=y buffer=100000000

在这条命令中,full=y ignore=y缺一不可,每缺一个都会报一种错误。buffer即缓冲区大小,设置的越大越好,默认单位并不是MB。

即便以上问题全部解决了,但运行上述命令还是会报一个什么分区导入的错误,网上也没有给出解释。正当我绝望时,打开pl/sql developer(以创建的用户,databases为空,模式为Normal)意外的发现Tables中出现了我想要的那张表,而且只有这一张。终于,我成功了!

4.最后的坑

走通了导入的流程,接下来就是导出了。由于我要导出为CSV文件,网上的指示是用pl/sql developer打开表到点击导出按钮,选择CSV文件即可。也就是说我需要用命令行导入,再到pl/sql developer打开导入的表导出。虽然比较麻烦但也能接受吧。接下来问题又来了。我发现合作方给予的数据都是由同一张表导出的,因此我导入时也是都以追加的方式集中在了一张表。而且,每个DMP文件都包含430万条左右的记录,导入和导出都需要4分钟左右的时间,一年的数据即365张表,这大大增加了我的时间成本。

和师兄商量之后决定先将全部DMP导入到一张表,再导出到一个文件,等导出后我们再细分。然而,在我操作时却发现表容量有限,大约导入到第三个月的数据时就再也导不进去,开始报错了。因此我只得选择以月为单位进行一个月数据的导入和导出。并且,每完成一个月的数据工作,都需将表删除。每月DMP文件的导入通过批处理命令服务器自动运行。

最后,经过两天的服务器不间断不工作总算完成了全部DMP文件的导入和导出,心累啊!

由于笔者也是第一次接触Oracle数据库,操作中难免有舍近求远之处,谨在此记录交流遇到的这些问题,欢迎批评指正!

Oracle11g导入DMP文件并导出为CSV文件过程全纪录相关推荐

  1. java导出csv文件_java导出生成csv文件的方法

    本文实例为大家分享了java导出生成csv文件的具体代码,供大家参考,具体内容如下 首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分 ...

  2. Python+pywin32批量读取带密码的Excel文件数据导出为CSV文件

    好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...

  3. C# 导入CSV文件,导出到CSV文件

    导入CSV文件 public static DataTable ImportFromCsv(string filePath)//从csv读取数据返回table {//Encoding encoding ...

  4. C# 将bcp文件装换为csv文件

    C# 将bcp文件装换为csv文件 ​ 技术选型:C# + VS2015 + DevExpress + Sqlite ​ 源文件:ZIP(xml文件+bcp文件) 前提: ​ XML文件:为集合标签, ...

  5. oracle导出dmp空表导不出来,如何解决Oracle11g使用dmp命令无法导出空表问题

    如何解决Oracle11g使用dmp命令无法导出空表问题 导出:exp  username/password@orcl file=路径 tables=(tb1)    //tables=(tb1)可有 ...

  6. 如何解决Oracle11g使用dmp命令无法导出空表问题

    如何解决Oracle11g使用dmp命令无法导出空表问题 导出:exp  username/password@orcl file=路径 tables=(tb1)    //tables=(tb1)可有 ...

  7. 解析淘宝助理导出的csv文件

    1.导入所需的jar包 javacsv-1.1.2.jar maven依赖 <dependency><groupId>net.sourceforge.javacsv</g ...

  8. phpMyAdmin将数据表中数据导出为csv文件,用微软excel打开时,中文乱码的原因以及解决办法

    中文乱码的原因:用户使用phpMyAdmin可以将数据表中数据导出为csv文件,而使用Excel工具打开该文件时,可能出现中文乱码的情况.这是因为phpMyAdmin导出的csv文件使用了UTF-8编 ...

  9. oracle导出多CSV文件的靠谱的

    oracle导出多CSV文件的问题 ---------------------------------------------------------------------- 用ksh脚本从orac ...

最新文章

  1. 一文搞定深度学习建模预测全流程(Python)
  2. 什么是android刷机包,什么是安卓RAM?安卓RAM和安卓ROM有什么区别?
  3. Ambari2.7.0 + HDP3.1.4.0安装,hdfs数据备份和恢复,hive数据备份和恢复,hbase数据备份和恢复,常见错误总结,Ambari卸载,hadoop-ha,hive和ES整合
  4. 2016rMBP登录后自动关机、帐户数据丢失
  5. 如何判断当前的SAP Spartacus已经运行在SSR模式,而不是PWA模式下了
  6. 海思 截图显示_三星Note10+5G国行跑分达到45万,华为海思麒麟990压力大不大?
  7. (day 37 - 动态规划)剑指 Offer 46. 把数字翻译成字符串
  8. [转载]DevOps建立全生命周期管理
  9. excel跨多个表格求和_收藏学习!一个Excel函数搞定进销存报表,你还在花钱买软件?...
  10. 国产数据库-达梦数据库
  11. 支付宝-沙箱环境配置和使用
  12. 集成学习-Stacking与Blending与泰坦尼克号特征工程(DataWhale第二期)
  13. 先是艾瑞咨询后是腾讯,永洪科技把客户变成了投资人
  14. 微信无法连接到服务器的原因
  15. ppt密码怎么设置,ppt权限密码如何破解?
  16. android7 强制gpu渲染,安卓手机开启强制GPU渲染功能的方法
  17. 什么软件查C语言答案,C语言小测验和参考答案
  18. 小巧的Mac软件卸载工具,App Cleaner的优点
  19. java 汉字转拼音工具_【转载】Java汉字转全拼工具
  20. 修复win10的更新服务器,修复win10系统更新steam发生错误提示“无法连接服务器”的教程步骤...

热门文章

  1. 苹果12开发者设置_iPhone12手机5G在哪开启关闭 苹果12手机5G网络设置方法
  2. MATLAB的学习——基本操作和矩阵操作
  3. Python自动化操作Excel绘制条形图!
  4. 【微信小程序】获取用户手机号的实现
  5. 调和级数发散的简短证明
  6. svg 地图_一秒带你制作出全国各省市区县地图
  7. 经常打电话的人用什么耳机好?通话质量好的蓝牙耳机推荐
  8. **sony Wi-H700通话质量非常差的原因分析**
  9. C++设计模式 命令模式(服务员命令厨师)
  10. 损失函数--持续更新