У меня есть таблица, которую я извлекаю из соединения 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?