oracle数据的导入小方法

oracle数据的导入小方法

最近在发布应用环境,同事想出了一个导入oracle数据的好办法,能做到数据“一键还原”。哈哈。这里也记录一下,以后说不定也有大用处。

利用ant来删除数据库用户,利用ant来导入dmp包,利用ant来执行sql文件导入数据的patch补丁。
看了这个ant脚本应该就清楚了。build.xml如下:
<project name="ccdb" default="all" xmlns:ivy="antlib:org.apache.ivy.ant">
<!-- classes12.jar的位置,放置数据库的驱动jar -->
<path id="runtime.lib">
   <fileset dir="D:\\dev-lib\\jdbc-driver" />
</path>
<!-- 调用cmd命令,删除原有用户,重新新增用户 -->
<target name="newUser">
   <exec executable="cmd" failonerror="true">
    <arg value="/c" />
    <arg value="sqlplus" />
    <!-- 使用dba去连接CPMIS5,这个CPMIS5是我pl sql里面配置的别名 -->
    <arg value="sys/system@CPMIS5 as sysdba" />
    <arg value="@newuser.txt" />
   </exec>
</target>
<!-- 用命令行导入统计目录下的cc.dmp文件新建干净的数据库 -->
<target name="impDb">
   <exec executable="cmd" failonerror="true">
    <arg value="/c" />
    <arg value="imp" />
    <arg value="cc/cc@CPMIS5" />
    <arg value="FILE=cc.dmp" />
   </exec>
</target>
<!-- 执行sql脚本,将一些数据写入到刚才的干净的cc.dmp的库中 -->
<target name="preData">
<sql driver="oracle.jdbc.driver.OracleDriver"
     url="jdbc:oracle:thin:@10.206.20.6:1521:cctest"
     userid="cc"
     password="cc"
     print="yes" output="outputfile.txt">
   <classpath refid="runtime.lib"/>
   <transaction src="01_COMPANIES.sql"/>
   <transaction src="02_workgroups.sql"/>
   <transaction src="03_users.sql"/>
   <transaction src="04_ROLES.sql"/>
   <transaction src="05_AUTHORITIES.sql"/>
   <transaction src="06_PANEL.sql"/>
   <transaction src="07_PORTLET.sql"/>
   <transaction src="08_PANEL_PORTLET.sql"/>
   <transaction src="09_ATTACH_CATEGORY.sql"/>
</sql>
</target>
<target name="all" depends="newUser,impDb">
</target>
</project>

其中的同级目录下的newuser.txt文件如下:
drop user cc cascade;
create user cc identified by cc;
grant resource,connect to cc;
quit;

没有想到ant能这么执行cmd命令,同时也可以做sql导入。哈哈。又学了一招了。

你可能感兴趣的:(oracle,sql,xml,ant,脚本)