2015-01-22 6 views
0

다른 프로그램의 입력 파일을 만드는 데 사용하는 쿼리가 있습니다. 시스템 명령을 사용하여 R 스크립트를 통해 bcp 유틸리티를 사용하여 프로세스를 수행하려고합니다. 나는 CMD 물건에 다음을 실행하려고 잘 때SQL Server 2008 쿼리를 bcp 쿼리로 변환

SELECT TOP 1000 
case when [click] = 1 then 1 
else -1 
end 
+ ' ' 
+ '|' 
+ 'hr ' hour 
, C1 
from [mydb].[dbo].[table1] 

:

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 

을 내가 이것을 가지고 그것을 실행하려고하지만 경우 (SQL Server 2008 R2를 사용하여) 다음과 같이 쿼리입니다 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 메시지에 대해 오류가 발생합니다. 뭐가 보이지 않는가?

답변

2

같습니다 당신은 몇 가지 문제가 같은 : 당신은 숫자 문자열 (예 : CASE 숫자를 반환하지만 다음 다른 재료와 연결되는)

  • 당신은 관계없는 쉼표를을 연결하는

    • 을 단지 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') 
    
  • +1

    R 그렇게 screechOwl 두 가지 (또는 네 가지가 필요합니다 하나 실제 백 슬래시를 얻기 위해 이스케이프 문자로 백 슬래시를 사용 디렉토리 문자열에 백 슬래시가 두 배로 있어야합니다. –