我有一个查询,我用它来为另一个程序创建输入文件。我尝试使用系统命令通过R脚本使用bcp实用程序执行该过程。查询如下(使用SQL Server 2008 R2):
SELECT TOP 1000
case when [click] = 1 then 1
else -1
end
+ ' '
+ '|'
+ 'hr ' hour
, C1
from [mydb].[dbo].[table1]
当我尝试在CMD中运行以下内容时,一切都很好:
C:\Users\me>bcp "SELECT top 1000 case when click = 1 then 1 else -1 end, + ' |hr ' hour, C1 from [mydb].[dbo].[table1]" queryout "C:\\Users\
\me\\Desktop\\bcp_test.txt" -T -c -t
然而,当我拿这个并尝试在R中运行它时使用:
system('bcp "SELECT top 1000 case when click = 1 then 1 else -1 end, + ' |hr ' hour, C1 from [mydb].[dbo].[table1]" queryout "C:\\Users\
\me\\Desktop\\bcp_test.txt" -T -c -t')
我收到有关字符串常量和状态1消息的错误。好像什么都没关系?
答案 0 :(得分:2)
看起来你有一些问题:
CASE
返回一个数字,但它正在与其他内容连接)END
声明的CASE
后面有一个无关的逗号+ ' |hr'
假设R使用反斜杠来转义嵌入的单引号,命令应为:
system('bcp "SELECT TOP 1000 CASE WHEN [click] = 1 then \'1\' else \'-1\' END + \' |hr \' AS [hour], [C1] FROM [mydb].[dbo].[table1];" queryout "C:\\Users\\me\\Desktop\\bcp_test.txt" -T -c -t')