在sqlcmd中使用bash变量

时间:2019-07-10 17:18:03

标签: bash sqlcmd

我的任务是用sqlcmd替换许多bash脚本中的ISQL。 ISQL允许在执行过程中传递变量。 一个例子是:

    SQL_STATEMENT="SELECT TOP 1 SYS_USER_NAME FROM SYS_USER"
    echo $SQL_STATEMENT | isql -b -d, $DSN $DBUID $DBPWD >> setupdb_test.txt

据我所知,这在sqlcmd中不可行。我怎样才能做到这一点? sqlcmd必须具有哪些标志才能允许这种情况发生?

这是我尝试过的结果,但是效果很好,但我真的不想每次运行特定脚本时都创建文件sql_command.sql:

    echo "SELECT TOP 1 SYS_USER_NAME FROM SYS_USER" > sql_command.sql
    sqlcmd -S $DB -U $DBUID -P $DBPWD -d $DSN -i sql_command.sql >> setupdb_test.txt

1 个答案:

答案 0 :(得分:1)

源自Windows的程序对于如何处理非常规文件可能会很挑剔,因此我没有机会进行测试,但是您可以尝试使用Unix技巧,向{{1 }}。

echo之一:

/dev/stdin

或进程替换:

echo "SELECT TOP 1 SYS_USER_NAME FROM SYS_USER" | sqlcmd -S "$DB" -U "$DBUID" -P "$DBPWD" -d "$DSN" -i /dev/stdin