2014-01-29 60 views
4

我想设置一个简单的循环来定期查询bash中的数据库表。通常情况下我似乎要做的:我如何传递一个命令到sqsh并一次性获得输出到一个文件?

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 

我试图使用-C选项SQSH在这样的命令传递:

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 '\'. 

如何获得预期的效果?

回答

9

当您使用-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,马丁

相关问题