将 SQL Server 2008 查询转换为 bcp 查询
Convert SQL Server 2008 query to bcp query
我有一个查询用于为另一个程序创建输入文件。我正在尝试使用系统命令通过 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 消息的错误。有什么不对劲吗?
您似乎遇到了一些问题:
- 您正在将字符串与数字连接起来(即
CASE
returns 一个数字,但随后它与其他内容连接起来)
- 在
CASE
语句的 END
后面有一个多余的逗号
- 而且我不知道 R 如何转义嵌入式引号,但您的主要问题在于
+ ' |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')
我有一个查询用于为另一个程序创建输入文件。我正在尝试使用系统命令通过 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 消息的错误。有什么不对劲吗?
您似乎遇到了一些问题:
- 您正在将字符串与数字连接起来(即
CASE
returns 一个数字,但随后它与其他内容连接起来) - 在
CASE
语句的END
后面有一个多余的逗号 - 而且我不知道 R 如何转义嵌入式引号,但您的主要问题在于
+ ' |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')