我有一个表是从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?