如何使用mysql命令行(通过ant)执行一组sql文件

如何使用mysql命令行(通过ant)执行一组sql文件,mysql,file,ant,set,execute,Mysql,File,Ant,Set,Execute,我想执行给定目录中所有拒绝的sql文件。 我想打的电话是这样的: mysql --host=dbbackend --user=stack --password=overflow dbname -e 'source file1.sql' 这可以表示为: <apply executable="mysql" dir="." failonerror="true"> <arg value="--host=dbbackend"></arg>

我想执行给定目录中所有拒绝的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>

进入:


如果有占位符,那么我想将其用于“apply”标记的“input”属性(并删除参数“-e”)

“apply”元素有一个可用的“srcfile”标记,但我不能调用它(不起作用):


对于如何使用原生ant声明,您有什么建议吗? 是否有可能使用antcall+文件集(+占位符)构建解决方案

noobish的解决方法是通过文件集进行迭代,并创建一个包含对sql文件的引用的临时sql文件。最后一步:通过“-e”将其称为static。但这是我想(通过这个问题)消除的一个变通方法

PS:我不想使用ant contrib功能

为什么不使用,它的设计正是为了做您想做的事情

否则,您可以使用
srcfile
嵌套元素:

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

为什么不使用,它的设计目的正是要做您想做的事情

否则,您可以使用
srcfile
嵌套元素:

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

有点离题,因为你得到了答案。您可以编写
,不必使用
,只需使用
/>
编写即可。哦,是的,。。。如果你得到了答案,就接受答案。因为你得到了答案,所以有点离题。您可以编写
,不必使用
,只需使用
/>
编写即可。哦,是的,。。。如果你得到了答案,就接受答案。
<apply ... parallel="false">
  <...>
  <arg value="--e source" />
  <srcfile/>
  <fileset ...></fileset>
</apply>