【问题标题】:Can't get data with dbplyr from shiny-server无法使用 dbplyr 从闪亮服务器获取数据
【发布时间】:2018-08-06 21:00:55
【问题描述】:

我正在尝试从 AWS SQL Server 获取数据。 此代码在本地 PC 上运行良好,但在闪亮服务器 (ubuntu) 上无法运行。

library(dbplyr)
library(dplyr)
library(DBI)    

con <- dbConnect(odbc::odbc(),
                 driver = "FreeTDS",
                 server = "aws server",
                 database = "",
                 uid = "",
                 pwd = "")
tbl(con, "shops")
dbGetQuery(con,"SELECT *
                  FROM shops")

"R version 3.4.2 (2017-09-28)"

packageVersion("dbplyr")
[1] ‘1.2.1.9000’

packageVersion("dplyr")
[1] ‘0.7.4’
packageVersion("DBI")
[1] ‘0.7.15’

我有下一个错误:

tbl(con, "shops")
Error: <SQL> 'SELECT *
FROM "shops" AS "zzz2"
WHERE (0 = 1)'
  nanodbc/nanodbc.cpp:1587: 42000: [FreeTDS][SQL Server]Incorrect syntax near 'shops'. 

但是dbGetQuery(con,"SELECT * FROM shops") 工作正常。 你能解释一下出了什么问题吗?

【问题讨论】:

    标签: r dplyr shiny-server r-dbi dbplyr


    【解决方案1】:

    这更有可能是因为 FreeTDS 驱动程序没有返回 dbplyr 为了使用 MS SQL 翻译而期望看到的 class。解决方法是获取class(con) 的结果,然后在您连接之后、调用tbl() 之前添加以下行。将[you class name] 替换为class(con) 调用的结果:

    sql_translate_env.[your class name] <- dbplyr:::`sql_translate_env.Microsoft SQL Server`
    sql_select.[your class name]<- dbplyr:::`sql_select.Microsoft SQL Server`
    

    【讨论】:

      猜你喜欢
      • 2020-01-26
      • 2016-10-26
      • 2017-06-12
      • 2016-08-01
      • 2014-08-09
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多