我正在创建一个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文件中的服务器功能之外具有此功能。
答案 0 :(得分:0)
尝试将“ believeNRows = FALSE ”添加到您的SQLExecute调用中。没有该参数,RODBC不会返回完整查询。
auditdata<-sqlExecute(channel=dbhandle, query=query, fetch=TRUE, stringsAsFactors=FALSE, believeNRows=FALSE)