从ant执行sqlplus无法找到DYLD_库_路径
我正在尝试使用sqlplus的execute标记从ApacheAnt中运行SQL脚本从ant执行sqlplus无法找到DYLD_库_路径,ant,sqlplus,Ant,Sqlplus,我正在尝试使用sqlplus的execute标记从ApacheAnt中运行SQL脚本 <exec dir="src/sql" executable="sqlplus" failonerror="true" output="src/sql/test.sql.err"> <arg value="${db.login}"/> <arg value="@test.sql"/> </exec> 对于我设置的命
<exec dir="src/sql" executable="sqlplus" failonerror="true" output="src/sql/test.sql.err">
<arg value="${db.login}"/>
<arg value="@test.sql"/>
</exec>
对于我设置的命令行:
export DYLD_LIBRARY_PATH=/Applications/instantclient_11_2/
Ant要找到库,我需要采取类似的行动吗?一个选择是尝试一下SQLcl。 它是sqldev的sql脚本引擎,它是sqlplus,还有更多 好处是没有库,它是自包含的,并使用JDBC瘦驱动程序进行数据库连接 这是你的蚂蚁例子
<project name="sqlcl" basedir=".">
<property name="db.login" value="klrice/klrice"/>
<target name="sqlcl">
<exec dir="." executable="/Users/klrice/Downloads/sqlcl/bin/sql"
failonerror="true"
output="sql/test.sql.err">
<arg value="${db.login}"/>
<arg value="@sql/dual.sql"/>
</exec>
</target>
</project>
一种选择是尝试SQLcl。 它是sqldev的sql脚本引擎,它是sqlplus,还有更多 好处是没有库,它是自包含的,并使用JDBC瘦驱动程序进行数据库连接 这是你的蚂蚁例子
<project name="sqlcl" basedir=".">
<property name="db.login" value="klrice/klrice"/>
<target name="sqlcl">
<exec dir="." executable="/Users/klrice/Downloads/sqlcl/bin/sql"
failonerror="true"
output="sql/test.sql.err">
<arg value="${db.login}"/>
<arg value="@sql/dual.sql"/>
</exec>
</target>
</project>
使用@kris rice建议的解决方案,下面是我的实现,包括检查错误
<!-- =================================================================== -->
<!-- load plsql tox -->
<!-- =================================================================== -->
<target name="compile.plsql.tox" description="compile plsql for tox">
<echo message="compile.plsql.tox --------------------"/>
<mkdir dir="tmp/log"/>
<exec dir="src/sql" executable="sql" failonerror="true" output="src/sql/tox.all.sql.err">
<arg value="${db.login.tox}"/>
<arg value="@tox.all.sql"/>
</exec>
<echo message="looking for plsql errors -------------------"/>
<exec dir="src/sql" executable="grep" failonerror="false" resultproperty="found">
<arg value="LINE/COL ERROR"/>
<arg value="tox.all.sql.err"/>
</exec>
<fail message="plsql compile errors">
<condition>
<equals arg1="${found}" arg2="0"/>
</condition>
</fail>
<echo message="looking for line item errors ---------------"/>
<exec dir="src/sql" executable="grep" failonerror="false" resultproperty="found">
<arg value="ERROR at"/>
<arg value="tox.all.sql.err"/>
</exec>
<fail message="sql compile errors">
<condition>
<equals arg1="${found}" arg2="0"/>
</condition>
</fail>
<echo message="compile.plsql.tox --------------------"/>
</target>
<!-- =================================================================== -->
使用@kris rice建议的解决方案,下面是我的实现,包括检查错误
<!-- =================================================================== -->
<!-- load plsql tox -->
<!-- =================================================================== -->
<target name="compile.plsql.tox" description="compile plsql for tox">
<echo message="compile.plsql.tox --------------------"/>
<mkdir dir="tmp/log"/>
<exec dir="src/sql" executable="sql" failonerror="true" output="src/sql/tox.all.sql.err">
<arg value="${db.login.tox}"/>
<arg value="@tox.all.sql"/>
</exec>
<echo message="looking for plsql errors -------------------"/>
<exec dir="src/sql" executable="grep" failonerror="false" resultproperty="found">
<arg value="LINE/COL ERROR"/>
<arg value="tox.all.sql.err"/>
</exec>
<fail message="plsql compile errors">
<condition>
<equals arg1="${found}" arg2="0"/>
</condition>
</fail>
<echo message="looking for line item errors ---------------"/>
<exec dir="src/sql" executable="grep" failonerror="false" resultproperty="found">
<arg value="ERROR at"/>
<arg value="tox.all.sql.err"/>
</exec>
<fail message="sql compile errors">
<condition>
<equals arg1="${found}" arg2="0"/>
</condition>
</fail>
<echo message="compile.plsql.tox --------------------"/>
</target>
<!-- =================================================================== -->
我不知道SQLcl的存在。工作完美。谢谢,太好了,我能帮上忙!我不知道SQLcl的存在。工作完美。谢谢,太好了,我能帮上忙!