如何将带有空格的字符串从命令行传递给SQL

时间:2014-07-07 13:49:01

标签: sql command-line command-line-arguments

我在Windows 7中使用命令行从CSV读取变量行,将这些变量传递给SQL命令,并为CSV中的每一行执行该SQL命令。我相信这很好用。我遇到麻烦的地方是我的变量包含空格,例如需要输入到我的数据库中的字符串。

我的代码如下所示:

命令行:

C:\Users\me>(sqlcmd -S npl-sql01 -d OnBaseTEST -i "C:\Users\me\myquery.sql" -v var1="\Policy Term\Policy\" var2= 'REPORT' var3= 'Commercial' )

var1var2var3是SQL查询中从CSV获取其值的变量。

SQL查询:

INSERT INTO testdb (column1, column2, column3) SELECT $(var1), $(var2), $(var3), od.value FROM otherdatabase AS od WHERE od.identifier = 24

当我将变量np包装在单引号中时,命令行会阻塞路径中的空格。当我用双引号将其包装时,SQL似乎将其视为列名而不是要放入列(based off of this question)的值。我也试过用两组引号包装,例如"'a string'"'"a string"',没有运气。我应该如何用空格写出这个字符串,以便命令行和SQL都可以理解它?

编辑:由于某种原因,删除尾随变量var3允许脚本在用"'two types of quotes'"

包裹字符串时按预期工作

0 个答案:

没有答案