如何使用mysql命令行执行(通过ant)一组sql文件
问题描述:
我想执行所有在给定目录中阻止的sql文件。 我想拨打电话是这样的:如何使用mysql命令行执行(通过ant)一组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>
如果我在DIR 3个SQL文件,然后dummy.sql被称为3倍。到现在为止还挺好。是否有可用的占位符来改变这一行:
<arg value="--e source dummy.sql"></arg>
到:
<arg value="--e source ${unknown.placeholder.name}"></arg>
如果有一个占位符,然后我想使用它的“应用”标签的“输入”属性(并删除参数“-e”)。
没有为“应用”元素的“SRCFILE”标签可用,但我不能把这个(不工作):
<arg value="--e source"></arg>
<srcfile/>
你对如何与本地蚂蚁做到这一点建议宣言? 是否可以使用antcall + fileset(+占位符)构建解决方法?
Noobish的解决方法是通过fileset进行迭代,并创建一个临时sql文件并引用sql文件。作为最后一步:通过“-e”将其称为静态。但是,这是一个解决方法,我想删除(通过这个问题)。
PS:我不想使用ant-contrib功能。
答
为什么不使用ant sql task,这是专门用来做你想做的事情?
否则,您可以使用srcfile
嵌套元素:
<apply ... parallel="false">
<...>
<arg value="--e source" />
<srcfile/>
<fileset ...></fileset>
</apply>
上有manual page of the apply task一个完整的例子。
小题外话,因为你有你的答案。你可以编写'',你不必使用' ',只需要用'/>'来写。哦,是的,...并接受一个答案,如果你已经得到你的。 –
2012-03-22 11:55:56