5

我正在尝试设置一个简单的循环来定期查询 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

我试图使用-Csqsh 的选项来传递这样的命令:

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

我怎样才能得到想要的效果?

4

1 回答 1

11

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

于 2014-01-30T08:43:16.117 回答