3

SQLCMDデータベース サーバーからローカル マシンにテーブルをダンプするために使用するバッチ スクリプトを作成しています。そのために、テーブル名だけを柔軟に指定できるようにクエリを作成します。テーブル名に応じてクエリが作成され、SQLCMDコマンドで使用されます。クエリを作成するためのコード スニペットを以下に示します。

@echo off
SET tableName = testDB
SET dumpTable="SET NOCOUNT ON; SELECT * FROM %tableName%"
ECHO %dumpTable%

このスクリプトを実行すると、次の出力が得られます

"SET NOCOUNT ON; SELECT * FROM "

set ステートメントでtableName変数が置換されていません。この出力を実現するには、スクリプトをどのように変更すればよいですか。

"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 に答える