3

我正在编写一个批处理脚本,用于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"
4

1 回答 1

6

=变量赋值中的符号周围不能有空格。替换这个:

SET tableName = testDB

有了这个:

SET tableName=testDB

此外,您不应该在变量赋值中的值周围加上双引号,因为这样双引号将成为值的一部分。更好的做法是在整个赋值两边加上双引号,然后在使用变量时根据需要引用它,例如:

set "tableName=testDB"
set "dumpTable=SET NOCOUNT ON; SELECT * FROM %tableName%"
sqlcmd -d database -q "%dumpTable%"
于 2013-07-21T21:31:39.557 回答