我正在编写一个批处理脚本,它使用SQLCMD
将数据库服务器中的表转储到本地计算机上。为此,我构造了查询,以便我可以灵活地指定表名。根据表名构造查询,然后在SQLCMD
命令中使用该表名。构建查询的代码段如下所示:
@echo off
SET tableName = testDB
SET dumpTable="SET NOCOUNT ON; SELECT * FROM %tableName%"
ECHO %dumpTable%
在运行此脚本时,我收到以下输出
"SET NOCOUNT ON; SELECT * FROM "
tableName
变量未在set语句中替换。我应该如何修改我的脚本以实现此输出:
"SET NOCOUNT ON; SELECT * FROM testDB"
答案 0 :(得分:6)
变量赋值中=
符号周围不能有空格。替换这个:
SET tableName = testDB
用这个:
SET tableName=testDB
此外,您不应该在变量赋值中使用双引号,因为双引号将成为值的一部分。最好在整个赋值中加上双引号,然后在使用时引用变量,例如:
set "tableName=testDB"
set "dumpTable=SET NOCOUNT ON; SELECT * FROM %tableName%"
sqlcmd -d database -q "%dumpTable%"