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

执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行是由于在oracle中,安装目录\ora9i\bin被设置为全局路径(也可直接在系统环境变量中设置),该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。

下面是导入导出的实例。

数据导出:

1 将数据库zxcc完全导出,用户名kf 密码zx 导出到D:\zxcc.dmp中

   exp kf/zx@zxcc file=d:\zxcc.dmp full=y

full=y 表示全库导出。full总共有2个可选项yes(y)/no(n),缺省情况下full=no,这时只会将该用户下的对象导出。

2 将数据库zxcc中kf用户与cc用户的表导出

   exp kf/zx@zxcc file=d:\zxcc_ur.dmp owner=(kf,cc)

 

full方式可以备份所有用户的数据库对象,包括表空间、用户信息等,owner=XX只能备份指定用户的对象,其他用户下的就不备份了,EXP中full=y和owner=XX是不能同时使用的。

3 将数据库zxcc中的表kf_operator、kf_role导出

    exp kf/zx@zxcc file= d:\zxcc_tb.dmp tables=(kf_operator,kf_role)

  

tables=xx 表示备份相关表,不能同时和owner、full使用。

4 将数据库中的表kf_operator中的字段oper_id以"00"打头的数据导出

   exp kf/zx@zxcc file=d:\zxcc_t.dmp tables=(kf_operator) query=\" where oper_id like '00%'\"

 

query主要是导出合适条件的数据。使用该参数时,需要注意对所有操作系统保留字符都要使用转义符号。若有括号()也需要转义:

   query=\"where dt=to_date\(\'2007-09-22\',\'yyyy-mm-dd\'\)\" 。

  

如果遇到条件比较繁琐的语句,频繁的转义操作不仅费时,还很容易出错。我们可以使用exp或expdp的PARFILE参数避免query内容的繁琐转义问题。

例:

   oracle DBALNP01 > cat > zxcc.par

   tables=kf_operator

   file=zxcc.dmp

   query="where dt_time=to_date('2010-06-25','yyyy-mm-dd')"

  

这时就可以尽情的再双引号中写条件语句了。

上面是常用的导出,对于比较大的数据库,我们可以对导出文件进行压缩处理,可用winzip把dmp文件进行压缩。

也可以在上面命令后面加上 compress=y 来实现。

数据的导入:

1、将D:\zxcc.dmp 中的数据导入 zxcc数据库中。

   imp kf/zx@zxcc file=D:\zxcc.dmp

导数据得时候,有可能报错。为什么?有以下主要的原因:

  A. 导入的对象(表,视图,方法等)原本不属于当前连接的用户的

  B. 导入的对象在该数据库的指定用户下已经存在

  C. 导入的对象的原本用户不在这个数据库里

对于这三个问题的处理方法如下:

a/c、所有对象全部导入到指定的账户下:

    imp kf_new/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new

其中fromuser=kf为.dmp文件里的对象的原先的owner, touser=kf_new 为作为导入的对象的新的Owner.

b、忽略/插入数据:

  imp kf_new/zx@zxcc_new file= d:\zxcc.dmp ignore=y

其中ignore=y告诉imp.exe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)。

2、将d:\zxcc_tb.dmp中的表tb_operator 导入

   imp kf/zx@zxcc  file=d:\zxcc_tb.dmp  tables=(tb_operator)

忽略加载约束

  有时候导数据进来的时候,我们不需要把它的约束,比如一些外键约束等都导进来,可以加上参数constraints=N

  不加载索引(比如唯一性的索引),可以加上参数indexs=N

只加载结构,不加载数据,如果只要表的结构等定义(约束,触发器),而不要里面的数据,可以加上参数rows=N

  对于上述操作登陆操作的用户需是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括表,视图,方法,存储过程等等常见的对象。为什么“可能”包括?因为这个视导入导出的时候是否涉及相关类型的对象而定。

   Imp kf/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new ignore=y

  

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

注意:

(1)、操作者要有足够的权限,权限不够会有提示。

(2)、数据库链接正常,可以用tnsping zxcc 来检测数据库zxcc能否连上。

(3)、导入/导出数据库时注意字符集。可能会出现导出/导入时数据库字符集不一致而报错。

oracle数据库其他常用命令:

1、给用户增加导入数据权限的操作

第一,启动sql*puls

第二,以管理员(DBA)用户登陆

第三,

  create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)

第四,

  >grant create user , drop user , alter user , create any view , drop any view , exp_full_database , imp_full_database , dba , resource , create session to 用户名字;

第五, 运行cmd进入dmp文件所在的目录,

   imp userid=管理员用户名/密码 full=y file= filename.dmp

   或者 imp userid=管理员用户名/密码 full=y file=filename.dmp

 

2、Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.

先建立.par文件()

然后,使用时命令如下:

    imp parfile=/filepath/import9.par

例 import9.par 内容如下:

        FROMUSER=user       

        TOUSER=user_new     (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)          

        ROWS=Y

        INDEXES=Y

        GRANTS=Y

        CONSTRAINTS=Y

        BUFFER=409600

        file==/filepath/xxxx.dmp

        log==/filepath/import_log.log

  

学会使用oracle相关命令方法会给我们的工作带来很多便利,遇到问题可以迅速的解决,而不用再baidu出来的海量信息中去找解决方法。

Oracle数据库导入导出命令总结的更多相关文章

  1. oracle数据库导入导出命令!(转)

    oracle数据库导入导出命令! Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成 ...

  2. Oracle数据库导入导出命令总结 (详询请加qq:2085920154)

    分类: Linux Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的 ...

  3. oracle数据库导入导出命令!

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

  4. Oracle数据库导入导出命令

    在建立oracle客户端的前提下,Net Manager中配置了数据库的连接,使用此命令 导出数据 pauseecho 正在备份老数据库...pauseexp user/pwd@配置名称 file=d ...

  5. Oracle 数据库导入导出 dmp文件

    转自: http://hi.baidu.com/ooofcu/blog/item/ec5d1f9580d41f007af48077.html 首先询问对方数据库的表空间名称和大小,然后在你的oracl ...

  6. Oracle数据库导入导出 imp/exp备份还原

    Oracle数据导入导出imp/exp   Oracle数据导入导出imp/exp 在cmd的dos命令提示符下执行,而不是在sqlplus里面,但是格式一定要类似于:   imp/exp 用户名/密 ...

  7. oracle数据库导入导出方法

    Oracle Database 10g以后引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中. 数据泵导出导入(E ...

  8. Oracle数据导入导出命令

    IMP 和EXP命令 Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处 ...

  9. 转载-Oracle 数据库导入导出 dmp文件

    首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据.补充:1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数据还 ...

随机推荐

  1. 日常contest总结

    codeforces#352 div2 A 一个字符串的构造规律为1234567891011 问该字符串第i个数字是哪个 n<=1000 枚举即可 考虑这道题的拓展 当n=1e9的时候按位数枚举 ...

  2. Titanium studio安装

    在Win7 Titanium Studio的安装过程. 1.准备工作 Titanium存储空间的要求,Titanium Studio 需要1 GB.Android SDK需要1.5 GB.Blackb ...

  3. STM32——CAN通讯实现

    CAN通讯的实现步骤: 1.CAN初始化,其中包括:a.配置CAN时钟,配置IO: b.使能CAN中断向量: c.CAN硬件寄存器配置初始化: d.过滤器初始化: e.打开CAN中断. 2.CAN发送 ...

  4. JavaScript测试工具比较: QUnit, Jasmine, and Mocha

    1. QUnit A JavaScript Unit Testing framework. QUnit is a powerful, easy-to-use JavaScript unit testi ...

  5. odi 12.2.1中访问excel文件

    由于在odi 12.2.1中,必须使用jdk1.8,而jdk1.8中jdbc-odbc bridge已经不再支持,因此,可以使用Progress DataDirect SequeLink来充当jdbc ...

  6. Android开源框架:NineOldAndroid

    在android3.0以前的版本,要实现动画,一般是使用NineOldAndroid开源框架,之后,就可以直接使用android提供的animation API了. 仔细看过此开源框架后,可看出此框架 ...

  7. Cardinal样条曲线的Javascript实现(理论篇)

    首先,要对样条曲线进行插值的原因是:希望通过给定的关键帧点生成一条希望的直线或者曲线. 1.直线插值 生成一条直线,给定直线首尾的关键点P0,P1,就能确定这条直线的特性,比如y=kx+b中的斜率k和 ...

  8. android基础(五)网络编程

    android 的网络编程一般可以分为两种:基于Socket的,基于Http的. 一.socket与Http socket封装了TCP/IP协议,TPC/IP协议是传输层协议,主要解决数据如何在网络中 ...

  9. Selenium 2 入门

    在多个浏览器中进行 Web 应用程序的端到端功能测试 Selenium 是一款有名的 Web 应用程序测试框架,用于进行功能测试.新版本 Selenium 2 结合了 Selenium 1 和 Web ...

  10. nginx 在windows平台上对asp.net做反向代理

    代理服务器 当客户机向站点提出请求时,请求将转到代理服务器.然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器.内容服务器再通过该通道将结果回传给代理服务器.代理服务器将检索到的信 ...