如何使用 mysql 命令行执行(通过 ant)一组 sql 文件
我想执行给定目录中的所有 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(+占位符)构建解决方法?
新手的解决方法是通过文件集进行迭代并创建一个引用 sql 文件的临时 sql 文件。最后一步:通过“-e”将其称为静态。但这是我想删除的解决方法(通过这个问题)。
PS:我不想使用 ant-contrib 功能。
I want to execute all sql files which resistes in a given directory.
The call i want to make is something like this:
mysql --host=dbbackend --user=stack --password=overflow dbname -e 'source file1.sql'
This can be expressed as:
<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>
If i have 3 sql files in that dir, then dummy.sql is called 3 times. So far so good. Is there a placeholder available to change this line:
<arg value="--e source dummy.sql"></arg>
into:
<arg value="--e source ${unknown.placeholder.name}"></arg>
If there is a placeholder, then i want to use it for the "input" attribute of the "apply" tag (and remove the argument "-e").
There is a "srcfile" tag available for the "apply" element, but i can not call this (does not work):
<arg value="--e source"></arg>
<srcfile/>
Do you have suggestions on how to do it with native ant declaration?
Is it possilbe to build a workaround using antcall+fileset (+placeholder)?
The noobish workaround is to iterate via fileset and create a temp sql file with references to the sql files. As a last step: call it static via "-e". But that is a workaround that i want to remove (by this question).
PS: I do not want to use ant-contrib features.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不使用 ant sql 任务,它旨在完全执行您想要的操作做什么?
否则,您可以使用
srcfile
嵌套元素:应用任务的手册页。
Why not using the ant sql task, which is designed to do exactly what you want to do?
Else, you may use the
srcfile
nested element:There is a complete example on the manual page of the apply task.