批处理

时间:2016-08-02 21:19:57

标签: sql sql-server batch-file bcp

我创建了一个批处理文件,该文件使用bcp从一系列SSMS查询中输出数据。

为了便于阅读和维护,我想将每个查询设置为跨越多行的变量,我将在bcp调用中引用它,例如:

SET myQuery = 
"select a, b, c, d "
 "from tableA a "
 "inner join tableB b "
 "on a.Id = b.ID "
 "where a.value < .99 "
 "order by a.Id " 


bcp %myQuery% queryout C:\myDir\filenameOut.txt -S ServerName -T -c

我找到了做同样事情的克拉运算符,并按原样应用:

SET myQuery = 
"select a, b, c, d " ^
 "from tableA a " ^
 "inner join tableB b " ^
 "on a.Id = b.ID " ^
 "where a.value < .99 " ^
 "order by a.Id "

无济于事。错误消息说:

  

“[第一行内容]未被识别为内部或外部   命令,可操作程序或批处理文件。“

这让我觉得线条没有正确连接。

我意识到批处理文件通常不适合这样的多行操作,但有没有直接的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

"select a, b, c, d" ^
 "from tableA a" ^
 "inner join tableB b" ^
 "on a.Id = b.ID" ^
 "where a.value < .99" ^
 "order by a.Id"

我希望这会成为。

select a, b, c, dfrom tableA ainner join tableB bon a.Id = b.IDwhere a.value < .99order by a.Id

看到问题?

这就是你想要的

select a, b, c, d from table A a inner join table B b on a.Id = b.ID where a.value < .99 order by a.Id

答案 1 :(得分:0)

至少在我对SSMS v17.1的测试中,使用反斜杠\似乎可以正常工作

app.use(function(req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
 res.setHeader('Access-Control-Expose-Headers','Content-Type,expire');
next();
});