2016-09-08 6 views
1

誰かが問題に遭遇しましたか?私はRODBCパッケージを使用してMS SQLサーバーからデータをインポートするSQLファイルを使用する光沢のあるアプリケーションを持っています。

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) 

アプリは上記の最後の行で停止し、与える...エラーを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でストアドプロシージャを呼び出して問題を修正しました。 $演算子が無効のクエリが実行されず、空のベクトルを返すため、エラーが発生していました。

readCharを使用したスタンドアロンクエリがShiny Serverでは動作しないのはなぜか分かりませんが、その修正点です。

関連する問題