2012-08-23 10 views
0

我不得不執行的所有SQL文件的文件夾在用sqlplus命令問題執行與Ant腳本文件夾中的所有SQL文件(適用於任務)

我可以運行一個文件或第一個文件,此代碼

<apply executable="sqlplus" dir="." parallel="false"> 
    <!-- <arg value="-S" /> --> 
    <arg line="${db.user}/${db.pwd}@'${db.sid}'" /> 
    <arg value="@${db.run.build.script}" /> this is working, which is for executing one file 
    <!-- <arg value="--e source" /> --> 
    <srcfile/> 
    <fileset dir="..\..\Documents\test\Database\SQL\common\test" 
     casesensitive="no" description="take all sql files"> 
     <patternset> 
      <include name="**/*.sql" /> 
     </patternset> 
    </fileset> 
</apply> 

;但不能繼續進行其他文件

我已經嘗試過與應用任務的各種選項;但仍不能成功;我認爲第二個文件在開始導致問題時沒有「@」。

任何幫助將不勝感激。

+0

的'srcfile'嵌套元素接受一個叫做'prefix'參數可能會有幫助。請參閱http://ant.apache.org/manual/Tasks/apply.html –

回答

0

OK,首先:我從來沒有用過的sqlplus :-)

但是基於後我看到這裏:http://www.zorbathegeek.com/161/run-multiple-sqlplus-queries-via-dos-batch-file.html我理解,這是一個必須提供@作爲前綴路徑所有應該考慮的文件。

我看到有多種選擇,基於一定的限制:

  • 首先檢查,如果你能在你的文件的命令行多個這樣的規定:

sqlplus [login details] @C:/<your_path>/<file1>.sql @C:/<your_path>/<file1>.sql

  • 根據如果可能或不可以,你以後應該決定是否需要創建一個包含前綴爲@的文件名的文件(如示例中提供的)或不是

現在如何做預先計劃?我覺得應該是簡單的,只是儘量使用Ant的parhconvert描述:http://ant.apache.org/manual/Tasks/pathconvert.html

<fileset dir="..\..\Documents\test\Database\SQL\common\test" id="sql.files"> 
     <include name="**/*.sql"/> 
    </fileset> 

<pathconvert pathsep=" " property="prefixed.sql.files" refid="sql.files"> 
     <map from="c:/" to="@c:/"/> 
    </pathconvert> 

(你應該用你的文件路徑開始的字符串替換c:/此外,如果將轉儲到文件,pathsep=" "應將可能與pathsep="\n"代替,有可能是一個需要有每行一個文件,但這需要測試)

然後根據所有的在一個文件中的選項或CMD線的所有文件,您可以:

  • 要麼需要轉儲它tmp文件和使用該tmp文件名 http://ant.apache.org/manual/Tasks/echo.html
    在這種情況下運行,該文件應該是後來在喜歡你的應用ARG值直接刪除

  • 使用性質prefixed.sql.files :
    <arg value="${prefixed.sql.files}" />

相關問題