利用Ant向数据库插入数据

来源:互联网 发布:苹果虚拟定位软件 编辑:程序博客网 时间:2024/06/07 03:17

利用Ant向数据库插入数据

一、  安装Ant

到ant的主页下载页面,下载最新版本(本文使用的版本为1.6.0)的Ant压缩包,解压缩后配置下ANT_HOME就行了,具体的配置步骤参考配置说明。下载地址如下:

http://ant.apache.org/bindownload.cgi

二、  Ant向数据库插入数据步骤

正如我们所知的,Ant有很多功能,比如拷贝文件、编译java文件、生成压缩包等。这里将简单说明如何利用Ant来执行指定的sql脚本文件,以向指定的SQL Server数据库中插入数据。

本文使用的所有文件都在下面地址可以下载到,下载地址如下:

http://download.csdn.net/detail/wgw335363240/3756593

文件的目录机构如下:

D:\Pirvate\Study
 |
 |______ant
               |_____libs
                          |
                          |________jtds-1.2.jar
               |
               |_____SqlData
                          |
                          |________myData.sql
               |
               |_____my_build.xml

 

1.  下载Sql Server的驱动jar包

这里使用的驱动jar包是jtds-1.2.jar(SqlServer的驱动)。

2.  编写可以执行的sql脚本

这里编写了一个可以重复执行的脚本,具体的内容就不说明了。代码如下:

  

if exists (select * from dbo.sysobjects

    where id =  object_id(N'[STUDENT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table STUDENT

CREATE TABLE STUDENT (

    STUDENTID INT  PRIMARY KEY,

    NAME nvarchar(100),

    AGE  int default(1),

    SEX  int default(0)

 );  

insert into Student(StudentId,Name,Age,Sex) values(1,'张三',25,0);

insert into Student(StudentId,Name,Age,Sex) values(2,'李四',20,1);

insert into Student(StudentId,Name,Age,Sex) values(3,'王五',18,0);

 

3.  编写buildfile文件

Buildfile文件是ant执行时默认会查找的文件,默认会在当前路径上查找名为build.xml的文件。这里我们把这个buildfile文件命名为“my_build.xml”。xml文件里的每个标签的说明可以参考下面的网址:

http://ant.apache.org/manual/index.html

 

4.  执行ant命令,导入数据

  C:\Users\Administrator>ant  -buildfile D:\Private\Study\ant\my_build.xml 

Buildfile: D:\Private\Study\ant\my_build.xml

 displayInfo: 

     [echo] 根目录:D:\Private\Study\ant

     [echo] 开始向DB中插入数据

 insertDataToDB: 

      [sql] Executing  file: D:\Private\Study\ant\SqlData\myData.sql

      [sql] 1 of 1 SQL  statements executed successfully

 

 BUILD SUCCESSFUL

Total time: 8 seconds

C:\Users\Administrator>

 

 

ant 命令后的“-buildfile”参数是表明当前ant要执行的builfile文件所在的路径。

5.  查看Sql Server数据库

STUDENTIDNAMEAGESEX1张三2502李四2013王五180

 

注意:

[1]  这里ant执行的sql Server数据库脚本,由于Sql Server数据库脚本中的分号是可有可无的,所以利用Ant执行时一般没什么问题

[2]  当我们利用ant来执行Oracle脚本的时候,在编写脚本的时候我们要注意,因为Oracle脚本中的sql语句是利用分号来分割的,而ant的buildfile的xml文件中对语句的默认分割也是分号,这时就会产生冲突。通常的解决办法可以修改build.xml中“sql”标签中的“delimiter”属性为“!”,同时在sql脚本中的语句块的结束位置添加“!”即可。下面是是一段可以在ant中正确执行的脚本(注意语句块中的红色感叹号):

  declare v_count number(10); 

begin

         SELECT count(*) into v_count FROM xxxx WHERE CKey = 'KM_MAP_NEWDOC_PERCENT'  ;

          if(v_count<=0 or v_count is null) then

              insert into xxxx (configid,ctype,ckey,cvalue,cdesc,encrypted,siteid)  select max(configid)+1,21,'KM_MAP_NEWDOC_PERCENT','0.7','聚类地图中新知识点的规则定义,即新知识占所有知识的比例大于此处设置的阈值,默认值为0.7',0,0 from wcmconfig;

              update wcmid set nextid=0 where tablename='WCMCONFIG';

          end if;

end;!

 

--增加是否允许创建子场景(即是否为叶子节点)的字段 2011.10.12 by liwei 

declare v_count number(10);

begin

    SELECT  count(*) into v_count FROM cols WHERE table_name = 'xxxx' and  column_name='LEAFFLAG' ;

         if(v_count<=0 or v_count is null) then

             alter table xxxx add LeafFlag number default 0 not null;

        end  if;

end;!

 

[3]  Ant执行Oracle的其他相关原则

      a) 去掉commit、“set serverout off”、“set serverout on”、“set escape on”,和包含有“exec”的语句

      b) 去掉"/"

      c) 语句分隔符最好使用“分隔符” + “换行”,如:

         

ALTER TABLE xxx ADD (temp_advtoolbar CLOB)!
UPDATE xxx SETtemp_advtoolbar = advtoolbar!