我的任务是用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
答案 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