并非所有数据都从SQL数据库读入R

时间:2018-07-10 13:38:56

标签: sql r shiny

我正在创建一个Shiny应用程序,并且一直在使用Microsoft SQL Server Management Studio中的数据,方法是使用下面的查询创建表,将其保存为CSV,然后使用

进行读取
alldata<-read.csv(file1$datapath, fileEncoding = "UTF-8-BOM")

在服务器功能中包含以上代码,在ui功能中包含以下代码

fileInput("file1", "Choose CSV File", accept=".csv")

使用此代码,我已经能够成功地处理CSV中的所有数据(创建表格和绘图)。我想尝试在加载应用程序时直接从SQL Server获取数据,而不是进入SQL,执行查询,保存数据,然后再将其加载到应用程序中。我尝试了下面的代码,并且可以正常工作。例如,变量CODE有30个级别,当我用CSV读取数据时,所有这些级别都可以表示并可以操纵,但是当我运行以下代码时,只有23个级别可以表示和操纵。是否有特定原因可能会发生这种情况。我尝试将SQL代码与代码一起运行,以在base R中创建我的数据表,而不是发亮地看我是否可以发现某些无法正确读取的特定内容,但是当我逐行读取时,它们都能正常工作

library(RODBCext)


dbhandle<-odbcDriverConnect('driver={SQL Server}; server=myserver.com; 
database=mydb; trusted_connection=true')
query<-"SELECT CAST(r.DATE_COMPLETED AS DATE)[DATE]
  , res.CODE
  , r.TYPE
  , r.LOCATION
  , res.OPERATION
  , res.UNIT

  FROM
  mydb.RECORD r
  LEFT OUTER JOIN mydb.RESULT res
  ON r.AMSN = res.AMSN
  and r.unit = res.unit
  where r.STATUS = 'C' 
  and res.CODE like '%ABC-%'"
auditdata<-sqlExecute(channel=dbhandle, query=query, fetch=TRUE, stringsAsFactors=FALSE)
odbcClose(dbhandle)

*我只希望每个Shiny会话一次加载完整的数据集,所以我目前在server.R文件中的服务器功能之外具有此功能。

1 个答案:

答案 0 :(得分:0)

尝试将“ believeNRows = FALSE ”添加到您的SQLExecute调用中。没有该参数,RODBC不会返回完整查询。

auditdata<-sqlExecute(channel=dbhandle, query=query, fetch=TRUE, stringsAsFactors=FALSE, believeNRows=FALSE)