最近课题组有一个月的某市内的出租车数据,储存的格式是DMP格式,为了转成方便使用学习的CSV文件,这俩天陆陆续续的一直在鼓捣,踩坑无数,最后终于弄出来,原始数据如下(一般从数据公司获取的数据多为orcale导出的DMP格式)
首先将数据导入到自己的本地数据库orcale中,首先要确定原始导出数据使用的数据泵是exp还是expdp,相应的我们导入到本地数据库时就得使用imp或者impdp,不然会报错。
第二步是建立相应的表空间,以及相应的用户(这一步在sql中执行)
#创建表空间 create tablespace GPS datafile 'D:GPS.dbf' size 500M AUTOEXTEND ON NEXT 50M maxsize unlimited; #建立表空间后,创建相应的用户并赋予特权 create user MANAGE_TAXI identified by root default tablespace GPS; grant resource,connect to MANAGE_TAXI; grant dba to MANAGE_TAXI; #创建dpdata逻辑目录: create directory DPDATA as 'D:oracleInstallFile'; #逻辑目录不是真实在用户电脑中创建,需要自己后台创建,并且将DMP文 #件和LOG文件存放到此文件夹下
最后在cmd中输入下面代码导入成功
#impdp数据导入 impdp MANAGE_TAXI/root directory=DPDATA dumpfile=GPS_LOG_P20170424.DMP full=y table_exists_action=skip logfile=GPS_LOG_P20170424.log; # 在impdp导入文件时可以选择一些参数,看个人需求,这里我只使用了table_exists_action=skip 参数
将数据导入数据库之后,就可以使用导出表功能将数据导成CSV格式了
★【出现过的问题】
- 首先是imp/impdp弄错,通过将imp修改为impdp解决
- 其次是在导入数据时一直报错没有表类型和相应用户,刚开始一直没有解决,因为我感觉最开始的时候已经创建了表空间和用户(用户的名称和表名称不是MANAGE_TAXI和GPS,而是我随意起的名字,后面我按照报错的提示,创建了对应的名字的表空间和用户名称,数据就能成功的导入了,这个的原因我看网上挺多讨论的,调整参数什么的好像就可以不一致了,因为自己是第一次使用orcale,所有干脆按照错误起相同名字,问题就解决了
- 若数据量太大,在导入数据时会遇到导入错误,超过32G则在同一文件夹下为表空间添加数据文件
select file_name,tablespace_name,round(bytes/(1024*1024)) from dba_data_files; #查看表空间大小情况 alter tablespace GPS add datafile 'D:GPS02.DBF' size 5000M autoextend on next 200M maxsize unlimited; #为表空间增加容量
- 有时候操作数据库表格时候,遇到事务的占用,可以去后台查看占用资源的事务,手动删除(有时候操作错误,一直卡顿,我简直疯了)
【依次执行】
select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o where l.object_id=o.object_id;
select sid, serial#, username, oSUSEr, terminal,program ,action, prev_exec_start FROM v$session where sid = 202;
alter system kill session ‘202,27’;(sid,serial)
【小结】
网上能解我们许多这种小白遇到的问题,多学习多记录,遇到报错,多搜索



