我有一个闪亮的应用程序,用户选择一个SQL数据库中的表,然后选择这个表的一些列。然后应用程序运行这个函数来获取表:
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)
}
一个表有一个名为ACT_TEMP_°C_
的列。当我选择它时,dbGetQuery
语句失败:无效的列名'ACT_TEMP_°C_'。但是,正如您所看到的,我在函数中包含了print(columns)
和print(query)
,并且这些语句在R控制台中正确地打印了ACT_TEMP_°C_
。所以我真的迷路了。函数接收到正确的名称,但在dbGetQuery
中更改为错误的名称。
解决
dbGetQuery(conn, stringi::stri_enc_tonative(query))