来自 Shiny 应用程序的 `DBI::dbGetQuery` 运行 问题
Issue with `DBI::dbGetQuery` run from a Shiny app
我有一个闪亮的应用程序,用户 select 在 SQL 数据库中使用 table,然后 select 使用此 table 的某些列.然后应用程序运行此函数以获取 table:
selectAllGetQuery <- function(conn, columns, table){
columns <- toString(sprintf("[%s]", columns))
query <- sprintf("select %s from %s", columns, table)
print(columns) # ok
print(query) # ok
dbGetQuery(conn, query)
}
一个 table 有一个名为 ACT_TEMP_°C_
的列。当我 select 它时,dbGetQuery
语句失败: 无效列名 'ACT_TEMP_°C_'。但是,如您所见,我在函数中包含了 print(columns)
和 print(query)
,并且这些语句在 R 控制台中正确打印了 ACT_TEMP_°C_
。所以我真的迷路了。该函数收到正确的名称,但名称在 dbGetQuery
.
中更改为错误的名称
解决了
dbGetQuery(conn, stringi::stri_enc_tonative(query))
我有一个闪亮的应用程序,用户 select 在 SQL 数据库中使用 table,然后 select 使用此 table 的某些列.然后应用程序运行此函数以获取 table:
selectAllGetQuery <- function(conn, columns, table){
columns <- toString(sprintf("[%s]", columns))
query <- sprintf("select %s from %s", columns, table)
print(columns) # ok
print(query) # ok
dbGetQuery(conn, query)
}
一个 table 有一个名为 ACT_TEMP_°C_
的列。当我 select 它时,dbGetQuery
语句失败: 无效列名 'ACT_TEMP_°C_'。但是,如您所见,我在函数中包含了 print(columns)
和 print(query)
,并且这些语句在 R 控制台中正确打印了 ACT_TEMP_°C_
。所以我真的迷路了。该函数收到正确的名称,但名称在 dbGetQuery
.
解决了
dbGetQuery(conn, stringi::stri_enc_tonative(query))