R to_lower在数据库表上执行时不起作用

时间:2019-05-27 08:28:13

标签: r dbi

我有一个表是从DBI连接中提取的:

con <- DBI::dbConnect(odbc::odbc(),
                      Driver   = "SQL Server",
                      Server   = "server",
                      Database = "database",
                      UID      = "user",
                      PWD      = "pwd",
                      Port     = "port")


tbl_A <- tbl(con,"tbl_A")

我需要对“名称”列执行一些过滤操作,这些操作区分大小写,因此我需要添加一列lower_name:

tbl_A <- tbl_A %>% mutate(lower_name = to_lower(Name))

这会出现以下错误:

result_fetch(res @ ptr,n,...)中的错误:   nanodbc / nanodbc.cpp:2836:07009:[Microsoft] [ODBC SQL Server驱动程序]无效的描述符索引

我不明白为什么会返回此错误,因为将操作应用于应用于csv的同一表时,该操作可以正常工作:

tbl_A <- tbl(con,"tbl_A")
write.csv(tbl_A, file = "data/tbl_A.csv",row.names=FALSE)
tbl_A_csv <- read.csv("data/tbl_A.csv",stringsAsFactors = FALSE)

tbl_A_csv <- tbl_A_csv %>% mutate(lower_name = to_lower(Name))

返回正确添加了新列lower_name的表。

在执行操作之前将表写入csv是一个修复程序,但是最好不必将表写入csv文件。

请注意,“名称”列的类型为<chr>

为什么在tbl_A上执行此操作时不起作用,但对导出的csv文件有效?如何使其工作而不必将整个表写入csv?

0 个答案:

没有答案