2016-09-08 6 views
1

누구든지 문제가 생겼습니까? MS SQL 서버에서 RODBC 패키지를 사용하여 데이터를 가져 오기 위해 SQL 파일을 사용하는 반짝 이는 응용 프로그램이 있습니다.

응용 위의 마지막 줄에서 정지하고 있습니다 ... 오류를 IDAT $ CampYear에
ch <- odbcConnect(dsn = xxxxxx) 
iQry <- readChar("LeaderDashInd.sql", file.info("LeaderDashInd.sql")$size, T) 
oQry <- readChar("LeaderDashOrg.sql", file.info("LeaderDashOrg.sql")$size, T) 
iDat <- sqlQuery(channel = ch, query = iQry, stringsAsFactors = F) 
oDat <- sqlQuery(channel = ch, query = oQry, stringsAsFactors = F) 
odbcClose(ch) 

# PREPROCESSING -------------------------- 
cy <- max(iDat$CampYear) 

: $ 연산자는 원자에 대해 유효하지 않습니다 나는 server.R 파일에 여기에 문제를 좁혀했습니다 벡터. 내가 가져온 CSV 파일을 실행 동일한 응용 프로그램을 가지고 있기 때문에이 덩어리가 문제를 알고, 그것을 작동합니다.

몇 가지 참고 사항 :

  1. 이 코드는 shinyServer 기능 외부 server.R 파일에 먼저 실행됩니다.
  2. 내 워크 스테이션에서 R Studio을 실행하면 앱이 제대로 실행됩니다. Shiny Server를 설치하면 작동이 멈 춥니 다.
  3. 반짝이는 패키지가 최신이며 반짝 이는 서버가 최근에 설치되었습니다.

의견이 있으십니까?

+0

'class (iDat) '란 무엇입니까? 정확히 어떤 유형의 쿼리를 실행하고 있습니까? data.frame을 다시 얻는 것처럼 들리지는 않습니다. 어쩌면 당신은 오류가 발생했을 수 있습니다. – MrFlick

+3

워크 스테이션에서는 작동하지만 서버에서는 작동하지 않으면 "LeaderDashInd.sql"이 서버의 작업 디렉토리에 없을 수도 있습니다. – Benjamin

+0

iDat는 데이터 프레임입니다. 하지만 예, 서버 버전 *에서는 설명 할 수없는 이유가있을 수 있습니다. 내가 해왔 던 다른 문제 해결을 토대로이 문제의 핵심은 ... 데이터 프레임으로 가져 오지 않는 것처럼 보입니다. 예 SQL 파일은 서버의 wd에 있습니다. – jtdoud

답변

0

FYI ... SQL 쿼리를 저장 프로 시저로 변경 한 다음 RODBC::sqlQuery으로 저장 프로 시저를 호출하면 문제가 해결됩니다. $ operator invalid 쿼리가 실행 중이 아니며 빈 벡터를 반환했기 때문에 오류가 발생했습니다.

아직 readChar을 사용하는 독립 실행 형 쿼리가 Shiny Server에서 작동하지 않는 이유에 대해 설명하지는 않았지만 ... 수정되었습니다.