`

如何写批处理文件自动将数据导入oracle数据库

阅读更多

Oracle数据库的自动导入与导出,在许多地方有广泛的应用.例如:一个Oracle数据库应用系统开发结束后,如果要将系统安装到客户计算机上,就需要将初始数据导入到用户的Oracle数据库中.
最近项目中也需要实现以上功能,花了点时间搜索实验,整理如下:先把要安装的初始数据文件导出为initial.dmp,然后在客户计算上安装好oracle,接着执行批处理文件impInitialData.bat(与该批处理文件同一目录还有createuser.sql,initial.dmp两个文件)impInitialData.bat中内容如下:
@echo off
sqlplus system/manager @createuser
imp system/manager file=initial.dmp fromuser=initialuser touser=initialuser ignore = y上面的createuser是一个扩展名为sql的文件.与批处理文件放在同一目录下.其内容为:
create user initialuser identified by test;
grant dba,resource,connect to initialuser;
exit;简要解释一下:
@echo off 表示其之后的命令不在命令提示符窗口显示出来
sqlplus为oracle的一个工具程序,须先安装oracle后才能使用
system/manager 为oracle的一个默认管理员帐户,如果被锁定或更改密码了就不能用了,可以用其它的帐户/密码来替换;
@createuser 表示执行createuser.sql文件
该sql文件中, create user xx identified by yy;表示创建一个密码为yy的用户xx;
grant dba,resource,connect to xx;表示授权给用户xx dba,resource,connect 权限imp 为导入数据命令,后面的参数中 file表示要导入的数据库文件;fromuser表示原导出的数据库文件的用户名;touser表示要导入的数据库的用户名;ignore表示忽略错误大致的方法就是这样,可以再增添其它命令来执行更复杂的操作.Oracle数据导入导出imp/exp
功能: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完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

     上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
                     不过在上面命令后面 加上 compress=y 就可以了

数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST file=d:\daochu.dmp
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)

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

注意:
你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

以前我们一般都是使用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
       大约半个小时就可以执行完了。
文章引用自http://jadeluo.iteye.com/blog/776714

分享到:
评论

相关推荐

    如何自动将数据导入 Oracle数据库

    本文将深入探讨如何自动将数据导入Oracle数据库,这对于系统部署、备份恢复以及数据迁移等场景具有广泛的应用价值。 首先,数据导入Oracle数据库通常涉及数据的导出和导入过程。Oracle提供了多种工具来实现这一目标...

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...

    图片批量导入oracle数据库

    本话题聚焦于如何批量导入图片到Oracle数据库,这是一种常见的需求,特别是在处理大量图像数据的项目中。Oracle数据库作为一款强大的关系型数据库管理系统,支持多种类型的数据存储,包括BLOB(Binary Large Object...

    Oracle导入导出命令bat执行命.rar

    表空间是Oracle数据库中存储数据文件的逻辑单位,每个数据库对象都位于一个或多个表空间中。创建新表空间可能包括定义数据文件的位置、大小、自动扩展设置等。 创建新用户则是指在Oracle数据库中定义一个新的安全...

    Excel文件导入到Oracle数据库

    在IT领域,数据管理是至关重要的,而...总之,将Excel文件导入Oracle数据库是一项涉及数据处理、数据库管理和数据迁移的综合任务。理解这个过程中的关键步骤和注意事项,能够帮助我们更有效地管理数据,提高工作效率。

    Excel导入Oracle数据库关键代码

    总之,"Excel导入Oracle数据库关键代码"涵盖了从文件读取、数据转换、数据库连接、事务控制等多个环节,是数据工程中的一个基础但重要的任务。实际应用中,我们还需要考虑到数据安全、性能优化和用户体验等多个方面...

    windows下, oracle数据库备份批处理文件

    1. **Oracle Data Pump导出(expdp)**: Data Pump Export是Oracle数据库的一个组件,用于将数据库对象或整个数据库的数据导出到一个或多个DMP文件中。DMP文件是二进制格式,包含数据库对象的元数据和数据,便于迁移...

    oracle数据库自动恢复数据库批处理

    标题中的“Oracle数据库自动恢复数据库批处理”是指在Oracle数据库管理系统中,通过预先设定的脚本或批处理程序实现数据库的自动恢复。这通常涉及到数据库的备份、日志管理、故障检测以及数据恢复等关键环节,是...

    oracle备份批处理文件

    物理备份涉及复制实际的数据文件、控制文件、重做日志文件等,而逻辑备份则是通过导出(EXPDP)和导入(IMPDP)工具来备份和恢复数据。批处理文件通常结合这两种方法,根据特定需求定制备份策略。 创建一个批处理...

    excel导入oracle数据库

    总的来说,“Excel导入Oracle数据库”项目提供了从Excel文件向Oracle数据库导入数据的实用工具。这涉及到文件读取、数据库连接、数据映射以及数据导入等多个步骤,对于需要频繁进行此类操作的用户来说,能显著提高...

    excel导入Oracle数据库工具 非常强大

    Excel导入Oracle数据库是一种常见的数据迁移或数据处理任务,尤其在数据整理、数据分析或者系统集成时非常有用。这里介绍的是一款名为“XlsToOra”的工具,它专门用于将Excel表格的数据高效、便捷地导入到Oracle...

    Excel文件数据导入Oracle

    SQL\*Loader是Oracle提供的一种高效的数据导入工具,适用于将各种格式的外部数据文件(如文本、CSV、Excel等)导入到Oracle数据库中。它支持多种数据类型,包括字符型、整型、日期型及浮点型等,并且能够在不同版本...

    oracle数据导入和备份的批处理

    2. 文件系统备份:通过操作系统级别的复制工具,如`cp`或`rsync`,将数据文件、控制文件、重做日志文件等关键文件备份到其他存储位置。这种方法简单,但不包含数据库状态信息,恢复时需谨慎操作。 二、Oracle数据...

    oracle数据库备份与恢复命令(批处理)

    本篇文章将详细阐述Oracle数据库的备份与恢复命令,以及如何通过批处理方式进行自动化操作。 一、Oracle数据库备份 1. **RMAN (Recovery Manager)**: Oracle提供的强大工具,用于数据库的备份、恢复和维护。RMAN...

    如何在Oracle中实现数据自动导入导出

    Oracle数据库的自动导入与导出,在许多地方有广泛的应用。例如:一个Oracle数据库应用系统开发结束后,如果要将系统安装到客户计算机上,就需要将初始数据导入到用户的Oracle数据库中。先把要安装的初始数据文件导出为...

    ORACLE导入数据自动运行脚本

    3. **执行SQL脚本**:调用一个或多个SQL脚本文件,这些脚本通常包含`INSERT INTO`语句,用于将数据导入到目标表。 4. **处理错误**:在脚本中设定错误处理机制,当导入过程中出现错误时,能够记录并继续执行后续操作...

    Kettle生成1亿条数据导入oracle

    "导入Oracle数据库"部分说明了Kettle支持多种数据库的特性,包括Oracle。Kettle提供了一系列数据库连接步骤,使得数据可以方便地从Kettle作业或转换中流入或流出不同的数据库系统。在这个案例中,Kettle的高效数据...

    Oracle 批处理

    3. **XML在Oracle中的处理**:Oracle数据库支持XMLType数据类型,可以存储XML文档,并提供了强大的XMLDB功能来解析、查询和操作XML数据。使用DBMS_XSL_PROCESSOR或DBMS_XMLGEN等包,可以将XML数据转换为其他格式,...

    将excel的数据导入到数据库中

    要将数据导入Oracle数据库,你需要知道数据库的连接信息,如服务器地址、端口号、数据库服务名、用户名和密码。这些信息通常在`BaseDao`类中的URL(Uniform Resource Locator)字段设置。例如,对于Oracle,URL可能...

    ORACLE数据库备份用bat脚本

    本文将详细讲解如何利用批处理脚本(BAT)进行Oracle数据库的备份,并探讨如何通过Java代码实现定时备份。 首先,让我们理解"Oracle数据库备份用bat脚本"的概念。批处理脚本是Windows操作系统中的一种命令文件,...

Global site tag (gtag.js) - Google Analytics