我在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' )
var1
,var2
和var3
是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'"