如何使用ANT在远程服务器中执行SQL文件

时间:2010-07-02 12:46:01

标签: sql ant

我想使用本地Windows XP系统中的ANT脚本在UNIX服务器的/ x / y / z位置执行.sql文件。 .sql文件位于UNIX服务器上。

我在Windows XP系统中使用了以下ant目标:

  <target name="execute" >
    <sshexec host="hostname" 
    username="UNIX system username" 
    keyfile="/export/home/appldev/.ssh/id_dsa" 
    commandResource="psql -f /u01/appldev/devappl/po/11.5.0/reports/xxbt/1.0.0/sql"/>
  </target>

我尝试了以下post keyfile错误:

  <target name="execute" >
    <sshexec host="server_ip"
    username="server_uname" 
    password="server_pass" 
    command="touch abc"/>
  </target>

得到错误:

Buildfile: C:\Program Files\Java\apache-ant-1.8.1\build.xml

execute:
  [sshexec] Connecting to server_IP:22

BUILD FAILED
C:\Program Files\Java\apache-ant-1.8.1\build.xml:49: com.jcraft.jsch.JSchExcepti
on: connection is closed by foreign host

请帮忙。

1 个答案:

答案 0 :(得分:0)

使用Ant sql task

<sql
    driver="org.database.jdbcDriver"
    url="jdbc:database-url"
    userid="sa"
    password="pass" >
  <transaction  src="data1.sql"/>
  <transaction  src="data2.sql"/>
  <transaction  src="data3.sql"/>
  <transaction>
    truncate table some_other_table;
  </transaction>
</sql>

编辑:

要从Windows XP框中访问该文件,您有很多选择。您选择哪种方式取决于安全设置,以及您对Ant提示输入密码或将密码存储在文件系统上的文件中的感受。

  1. 您可以使用Samba公开UNIX目录。然后,您可以将其作为Windows中的驱动器安装。
  2. 在UNIX端使用FTP服务器公开文件。然后使用FTP task复制文件。
  3. 使用scp task使用SSH复制文件。
  4. 另一种方法是使用sshexec task来调用UNIX服务器上的数据库客户端。

    <sshexec host="unix-host"
      username="dbuser"
      keyfile="${user.home}/.ssh/id_dsa"
      commandResource="psql -f /x/y/z"/>