`

Oracle数据导入导出的N种实现。

阅读更多
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。

  Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过net8 assistant中本地——>服务命名 添加正确的服务命名

  其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了)这样你可以把数据导出到本地,虽然可能服务器离你很远。你同样可以把dmp文件从本地导入到远处的数据库服务器中。

  利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。

  执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。

  oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。

  下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。

  数据导出:

  1 将数据库TEST完全导出,用户名gdoa 密码123 导出到D:\TEST_BK.dmp中
  exp gdoa/123@TEST file=d:\TEST_BK.dmp full=y
    或 exp gdoa/123@TEST file=d:\TEST_BK.dmp

  2 将数据库中gdoa用户与sys用户的表导出
  exp gdoa/123@TEST file=d:\TEST_BK.dmp owner=(gdoa,sys)

  3 将数据库中的表table1 、table2导出
  exp gdoa/123@TEST file=d:\TEST_BK.dmp tables=(table1,table2)

  4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
  exp gdoa/123@TEST file=d:\TEST_BK.dmp tables=(table1) query=\" where filed1 like '00%'\"

  上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

  不过在上面命令后面 加上 compress=y  就可以了

  数据的导入1 将D:\TEST_BK.dmp 中的数据导入 TEST数据库中。

  imp gdoa/123@TEST file=d:\TEST_BK.dmp

  上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

  在后面加上 ignore=y 就可以了。

  2 将d:\TEST_BK.dmp中的表table1 导入

  imp gdoa/123@TEST  file=d:\TEST_BK.dmp  tables=(table1)

  基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。

  注意:

  你要有足够的权限,权限不够它会提示你。

  数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP ROWS=N //不保存数据;
导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP //保存数据;
导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP full=y //全部导出;

以前我们一般都是使用PL/SQL Developer来实现,但是PL/SQL Developer在导出、导入数据时有两个问题:
      1、要把表数据和对象(存储过程、视图)分开导出
      2、导出的视图如果有注释,那么在导入时常常会出错。

      其实,PL/SQL的导出、导入功能使用的是Oracle自带的工具:exp和imp,这两个工具的导出导入数据时提供了很多功能,PL/SQL 只是使用其中的一些功能。下面对它们简单介绍一下:

      1 exp/imp使用方法及实例
  
  exp/imp为一种数据库备份恢复工具也可以作为不同数据库之间传递数据的工具两个数据库所在的操作系统可以不同exp 可以将数据库数据导出为二进制文件imp 可以将导出的数据文件再导入到相同的数据库或不同的数据库
  
  数据库导出有四种模式full(全库导出), owner(用户导出), table(表导出), tablespace(表空间导出).
  
  full( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据.
  
  owner( 用户导出): 导出某个或某些用户的所有权限和数据.
  
  tables( 表导出): 导出某些表(可以是不同用户的)的结构和数据.
  
  tablespace( 表空间导出):表空间导出数据.
  
  执行exp 有三种方法:交互式,命令行和参数文件
  
  交互式:直接输入exp 命令用户可以按照exp 提示的信息一步一步操作,比较简单.
  
  命令行:输入命令行exp username/password parameter=value.
  
  参数文件:输入命令行exp username/password parfile=filename exp 所需的参数从参数文件引入.
  
  参数是可以重复的优先级为命令行优于参数文件后面的参数值覆盖于前面的参数值.
  
  参数介绍

         详细的介绍可通过exp help=y或imp helpe=y来查看。下面只对一些常用的参数进行说明。
  
  buffer 缓冲区大小如果此值设为0 则一次只导入一条记录对数据量大的导出可以设置较大一般缺省值即可.
  
  file 导出的文件列表可以指定一个或多个文件名缺省扩展名为.dmp 缺省导出文件名为expdat.dmp.
  
  filesize exp 导出文件的最大字节数超出时从文件列表中获取下一个文件名,没有,则提示输入新的文件名.
  
  help 显示export 参数帮助信息
  
  inctype 增量备份的类型:complete(完全),cumulative(累积)和incremental (增量).
  
  只可以在全库导出模式下才可以做完全累积或增量导出累积导出只导出自上次累积导出或完全导出以来已经修改的表增量导出只导出自上次增量累积或完全导出以来已经修改的表完全导出将数据库中全部对象都导出不管是否以及何时被修改.
  
  log:日志文件,一般如果以命令行导入时,将log 设置上比较好可以看,到所有的导入信息,导入信息哪儿出错,导入了那些数据库对象.
  
  show(imp):只是用来显示备份数据文件的内容.
  
  full:为Y 时表示在全库方式下导出缺省为N.
  
  tables:导出的表列表可以指定一个或多个表名.
  
  fromuser(imp):可以将导出文件中的一个用户模式的数据对象导入为另一个用户模式的对象此参数表示导出文件中的用户模式.
  
  touser(imp):此参数表示导入到数据库中时使用的用户模式对象譬如使用全库或者用户模式导出caittmdba用户的所有对象到一个文件中导入时需要将用户模式名称改为caittmdba1此时fromuser 为caittmdba,touser 为caittmdba1

       导出、导入实例
      
      导出数据:
       D:\oracle\ora92\bin\exp userid=caittmdba/cait@YSDB_192.168.1.2 owner=caittmdba file=e:\%DATE%.dmp log=e:\exp.log
       通过该命令可以把caittmdba这个用户所属的所有数据、对象导出到一个文件中,导出的日志写在e:\exp.log文件中,连接Oracle的本地服务名为YSDB_192.168.1.2,导出的文件为e:\%DATE%.dmp,这个文件的文件名是当前的日期。如果把这个命令写成批处理文件,并放到计划任务中,就可以自动进行备份数据了。

      导入数据:
      D:\oracle\ora92\bin\imp userid=caittmdba/cait@YSDB_192.168.1.2 fromuser=caittmdba touser=caittmdba file=e:\data.dmp log=e:\imp.log

      注意事项

      在导出数据时常常会出现Oracle 942 错误,这个错误往往是在对Oracle进行了升级后才会出现,这是Oracle升级程序的一个Bug(Oracle的Bug和补丁一直以来都是满天飞,而且不成体系,文档和技术支持以少,这一点和MS比起来就差很远了。如果大家去看一看Oracle的发展经历相关的文章就知道,Oracle从开始就这样)。
      这个Bug只需要执行ORACLE_HOME/rdbms/admin/catpatch.sql 脚本就可以了,同时要注意调大java_pool_size 和shared_pool_size这两个参数的大小,不然会很花时间的。在用sysdba的身份登录进SQL Plus执行下面的命令:
         SQL>shutdown immediate;
         SQL>startup migrate;
         SQL>@?/rdbms/admin/catpatch.sql
      大约半个小时就可以执行完了。

分享到:
评论

相关推荐

    ORACLE 常用手册导入导出

    IGNORE 导入时是否忽略遇到的错误,默认为N TABLESPACES 按表空间方式导入,列出要导入的表空间名 --导入 --整个文件导入 imp accp/accp@accp file=d:\item_back.dmp ignore=y full=y --特定用户的表导入到指定的...

    oracle 导入导出命令.txt

    oracle导入导出常用命令文档 常用的exp关键字 1、full用于导出整个数据库,在rows=n一起使用,导出整个数据库的结构。 如:exp userid=gwm/gwm file=/test.dmp log=test.log full=y rows=n direct=y 2、OWNER和...

    基于SSH框架,实现CSV文件上传,数据过滤导入ORACLE数据库,查询分析数据,并生成EXCEL文件,实现下载功能

    SSH框架ORACLE数据导入导出工具最近要进行设备数据处理,CSV数据量已经超过百万级别,EXCEL无法进行处理,做了一个基于SSH框架,实现CSV文件上传,数据过滤导入ORACLE数据库,查询分析数据,并生成EXCEL文件,实现...

    oracle数据同步到Greenplum的python脚本

    5、特殊字符处理:删除:'\u0000','"',oracle数据回车符:'\r','\n' 6、支持按分区导入 7、支持内存处理数据导入greenplum,导入失败生成csv格式文件,方便排错 8、支持生成csv格式文件导入greenplum。 9、传递不同...

    使用imp和exp命令对Oracle数据库进行导入导出操作详解

    这里导入导出路径都在D盘下,默认文件名为:example.dmp exp方式导出数据 相关参数项如下: 关键字 说明 默认 USERID 用户名/口令 FULL 导出整个文件 (N) BUFFER 数据缓冲区的大小 OWNER 导出指定的所有...

    oracle安装及备份

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的...

    oracle详解

    当进行数据导入时,主要有以下两种情况: (1) 源数据库和目标数据库具有相同的字符集设置。 这时,只需设置导出和导入端的客户端NLS_LANG等于数据库字符集即可。 (2) 源数据库和目标数据库字符集不同。 先将导出端...

    oracle数据备份

    oracle数据备份 例如 单表备份(前提库的结构是一样的) 导出: 开始钮->运行->输入CMD->进入DOS界面 EXP 用户名/密码@连接字符串 GRANTS=Y TABLES=(stu) file=C:\文件名.DMP 导入: 开始钮->运行->输入CMD->进入...

    Oracle 数据库导出(exp)导入(imp)说明

    buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n direct:使用直通方式 ,缺省为n feeback:显示处理记录条数,缺省为0,即不显示 file:输出文件...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。  自定义角色 Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户  创建角色 SQL> create role admin;  授权给...

    12c – 使用跨平台增量备份来减少传输表空间的停机时间 (Doc ID 2102859.1).pdf

    适用于: Oracle Database Cloud Schema Service - 版本 N/A 和更高版本 Oracle Database Exadata Cloud Machine - ...3. 使用数据泵把这个表空间的元数据导入至目标数据库 4. 把目标数据库的相关表空间置为 READ WRITE

    经典SQL脚本大全

    │ bcp-数据导入导出-二进制文件.sql │ bcp-数据导出为文件.sql │ bcp表数据存为XML.sql │ SQL Server到Oracle连接服务器的实现.sql │ SQL Server到SQLBASE连接服务器的实现.sql │ SQL Server到SYBASE连接...

    ORACLE之常用FAQ V1.0(整理)

    [Q]不同版本怎么导出/导入 29 [Q]不同的字符集之前怎么导数据 29 [Q]怎么样备份控制文件 29 [Q]控制文件损坏如何恢复 29 [Q]怎么样热备份一个表空间 29 [Q]怎么快速得到整个数据库的热备脚本 30 [Q]丢失一个数据文件...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 154 5.2.4 OMF 154 5.3 管理表...

    rman_xttconvert_VER4.3.zip.7z

    适用于: Oracle Database Cloud Schema Service - 版本 N/A 和更高版本 Oracle Database Exadata Cloud Machine - ...3. 使用数据泵把这个表空间的元数据导入至目标数据库 4. 把目标数据库的相关表空间置为 READ WRITE

    数据库系统安全、技术操作规程.doc

    Filename=导入的文件名 Options= -h =帮助 -n =只添加新点 -c =即使有一个错也继续 数据导入到主数据库后,数据必须传送到控制器和原点站中。这个功能由Drop Loader完成。 2-3.1. 数据的导入格式 导入文件...

    db2-技术经验总结

    1.6. DB2实现类型ORACLE的一些功能 29 1.7. 字符数据类型转换的时候需要注意的问题(原) 30 1.8. 本地谓词的使用注意(原) 31 1.9. windows/Linux或Unix下查看DB2端口号 31 1.10. 尽量让fetch first n row only或者...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例068 SESSION购物车中数据的读取 100 实例069 员工信息的管理 102 实例070 网页版九九乘法表 104 实例071 读取数组购物车中的数据 105 实例072 图像验证码的生成 106 2.6 跳转语句 107 实例073 控制页面中表情图...

Global site tag (gtag.js) - Google Analytics