Я установил соединение между R и SQL, используя пакет RODBC, и мне удалось подключиться и запросить базу данных из R.
Я создал небольшую функцию R, целью которой является удаление некоторых строк.(как параметр) в конкретной таблице.
Вот оно (nameDB - это имя моей базы данных, а values_conversion - другая функция, которую я сделал для преобразования некоторых данных из формата R в формат SQL):
delete_SQL = function(data, table){
ch = odbcConnect(nameDB,"postgres")
names = sqlColumns(channel=ch,table,schema="public",catalog = nameDB)$COLUMN_NAME
for(i in 1:nrow(data)){
sqlQuery(channel=ch,query=paste0("DELETE FROM public.\"",table,"\" WHERE ",
paste0(names," = ",values_conversion(data[i,]),collapse = " and "),";"),errors = TRUE)
}
odbcCloseAll()
}
Пример запроса: "УДАЛИТЬ ИЗ ОБЩЕГО. \" Lieu_protection \ "ГДЕ lieu_id = 3 и protection_id = 1430;"
Код внутри этой функции работает нормально, когда я выполняю все напрямую, но когда я вызываюфункция, которую он выдает
Error in sqlQuery(channel = ch, query = paste0("DELETE FROM public.\"", :
first argument is not an open RODBC channel
У меня есть похожая функция, которая получает и возвращает данные из SQL и работает нормально, поэтому я думаю, что это как-то связано с удалением, но ошибка заключается вканал, так что я в замешательстве.
Спасибо всем, кто может помочь!