如何使用ant来运行包含set定义的sql文件

时间:2018-08-08 18:25:03

标签: ant

我有这个dbobject.file,它依次调用了几个dml,ddl和prcs。 我正在尝试使用ant执行此文件,但它仅需要sql语句,会为set define和spool抛出错误。它正在使用sqlplus进行工作,但我想使用ant运行,因此调用此dbobject文件应执行dmls和ddls。

set define off
spool dbobjects.log
prompt calling D:\Pst1\Intel\tag\txt1.dml
@"D:\Pst1\Intel\tag\txt1.dml"
prompt calling D:\Pst\Intel\tag\txt2.dml
@"D:\Pst\Intel\tag\txt2.dml"
set define on

谢谢。

1 个答案:

答案 0 :(得分:0)

从您提出的问题出发,听起来好像您正在尝试弄清楚如何将Oracle sqlplus脚本转换为SQL Ant task

spoolset都不是SQL命令,它们不会影响服务器,而是会更改sqlplus在本地的操作方式。因此,在Ant的上下文中,它们将毫无意义。如果您要在脚本中打印结果,则可以使用output=属性来执行类似的操作。

如果您要将sqlplus脚本转换为Ant,我希望它看起来像这样:

<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass"
    src="txt1.dml"
    output="dbobjects.log" />
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass"
    src="txt2.dml"
    output="dbobjects.log"
    append="true" />

这将针对您的数据库将txt1.dml和txt2.dml作为一组SQL文件执行,并将生成的所有结果集保存到dbobjects.log中。

在某些情况下,这可能无法正常工作,尤其是当您依赖sqlplus提供的任何功能(如报表格式或嵌套导入)时。在这种情况下,您需要重写源文件以仅包含SQL。

相关问题