簡體   English   中英

如何使用mysql命令行執行(通過ant)一組SQL文件

[英]How to execute (via ant) a set of sql files with mysql command line

我想執行抵抗給定目錄中的所有sql文件。 我要撥打的電話是這樣的:

mysql --host=dbbackend --user=stack --password=overflow dbname -e 'source file1.sql'

可以表示為:

  <apply executable="mysql" dir="." failonerror="true">
      <arg value="--host=dbbackend"></arg>
      <arg value="--user=stack"></arg>
      <arg value="--password=overflow"></arg>
      <arg value="mydbname"></arg>
      <arg value="--e source dummy.sql"></arg>
      <fileset dir="${db.dump.location.data}" casesensitive="no" description="take all sql files">
          <patternset>
              <include name="**/*.sql" />
          </patternset>
      </fileset>
  </apply>

如果我在該目錄中有3個sql文件,則dummy.sql被調用3次。 到現在為止還挺好。 是否可以使用占位符來更改此行:

      <arg value="--e source dummy.sql"></arg>

變成:

      <arg value="--e source ${unknown.placeholder.name}"></arg>

如果有一個占位符,那么我想將其用於“ apply”標簽的“ input”屬性(並刪除參數“ -e”)。

有一個“ srcfile”標簽可用於“ apply”元素,但是我不能調用它(不起作用):

      <arg value="--e source"></arg>
      <srcfile/>

您是否對使用本機ant聲明進行處理有任何建議? 是否可以使用antcall + fileset(+ placeholder)構建替代方法?

無用的解決方法是通過文件集進行迭代並使用對sql文件的引用創建一個臨時sql文件。 最后一步:通過“ -e”將其稱為static。 但這是我要刪除(通過此問題)的一種解決方法。

PS:我不想使用ant-contrib功能。

為什么不使用ant sql任務 ,該任務旨在准確地完成您想做的事情?

另外,您可以使用srcfile嵌套元素:

<apply ... parallel="false">
  <...>
  <arg value="--e source" />
  <srcfile/>
  <fileset ...></fileset>
</apply>

apply任務手冊頁上有完整的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM