如何将命令传递给sqsh并一次性将输出传递给文件?

时间:2014-01-29 18:21:22

标签: sql-server database bcp sqsh

我正在尝试设置一个简单的循环来定期查询bash中的数据库表。通常我似乎必须这样做:

sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=','

然后在sqsh内我必须输入:

select * from some_table where foo=bar
\go -m bcp > /path/to/output.out

我试图使用sq {的-C选项传递命令,如下所示:

sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=',' -C 'select * from some_table where foo=bar \go -m bcp > /path/to/output.out'

但我一直在接受:

Incorrect syntax near '\'.

如何获得理想的效果?

1 个答案:

答案 0 :(得分:10)

使用-C选项将SQL语句传递给sqsh时,将隐式执行\ go命令。要以'bcp'结果样式获取输出,您需要使用-L参数设置变量'style = bcp'或使用-mbcp作为命令行参数,只需将输出重定向到文件,或使用sqsh -o参数指定输出的文件名。所以基本上你的命令看起来像:

sqsh -S SERV -U user -P passwd -D db -L bcp_colsep=',' -m bcp \
-C 'select * from some_table where foo=bar' > /path/to/output.out
HTH,马丁