2014-06-19 3 views
0

SQL에서 열 값을 명령 줄 인수로 사용하는 데이터를 추출하는 R 쿼리가 있습니다. 그러나 결과가 나오지는 않습니다.매개 변수화 된 Sql 쿼리에서 R이 작동하지 않습니다.

library(RODBC) 
argv <- commandArgs(TRUE) 
dbhandle <- odbcDriverConnect('driver={SQL Server};server=<srvr_nm>; database=<db>; trusted_connection=true') 
res <- sqlQuery(dbhandle, 'select * from table where col = \'argv[1]\'') 

이 내가 그것을 호출하고 어떻게

C:\Users\uid>"C:\Program Files\R\R-3.1.0\bin\x64\Rscript.exe" --slave --vanilla "c:\R\script.R" "abc" 

I는 얻을 출력을 (또한 도움이되지 다이 것을 통과하면서 나는 명령 행 인수에서 인용을 제거하는 경우에도) :

<0 rows> (or 0-length row.names) 

인용구 표시가 있었는지 확인했는데 ... 예. "abc"... 테이블에 저장된 값은 abc (인용 부호 제외)입니다. 나는

그런 다음 내가 "ABC"(대신 ABC 방송의)처럼 인용과 함께 테이블에 값을 삽입 ...

as.name(argv[1]) 

하지만 그것도 도움이되지 않았다으로 견적을 제거하려고 ...하지만 여전히 그것은 선택되지 않습니다.

쿼리에서 나를 도울 수 있습니까?

library(gsubfn) 
argv <- gsub('"', '', commandArgs(TRUE)) # remove double quotes 

# ... 

res <- fn$sqlQuery(dbhandle, "select * from table where col = '`argv[1]`' ") 

또는으로 마지막 줄을 바꿉니다 :

답변

0

gsubfn 패키지에 fn$을 시도 sqlQuery 일부 특수 내부 쿼리 구문 분석을하지 않는

argv1 <- argv[1] 
res <- fn$sqlQuery(dbhandle, "select * from table where col = '$argv1' ") 
+0

감사를 시도 ... 그것은 작동 ... – user2607677

0

이 문자열 'argv[1]'이의 가치로 평가하지 않습니다 argv[1]이지만 분석되지 않은 상태로 유지됩니다.

는 이들의 대신

res <- sqlQuery(dbhandle, 
    paste('select * from table where col = \'', argv[1], '\'', sep="")) 
res <- sqlQuery(dbhandle, 
    sprintf('select * from table where col = \'%s\'', argv[1])) 
관련 문제