Привет, я имею проблемы со вставлением новых реестров по отношению к Базе данных.
Я использую книжный магазин RODBC
чтобы присоединяться в базу данных с R, до там все добро, но когда захотел добавить реестр, что у меня есть хранение в дате frame как:
datos<- data.frame(nombre="juan",edad=22)
sqlSave(canal,tablename="alumnos",datos,append=TRUE)
У меня выходит ошибка: что я могу делать? у них какая-то подсказка есть? Я жду Ваш ответ. Большое спасибо.
Обновление:
Мой код простой:
library(RODBC)
canal <- odbcConnect("PrMYSQL",uid = "root")
datos<-data.frame(nombre='alberto', edad=31,sexo= 'masculino')
guardar<- sqlQuery(canal,"INSERT INTO alumnos (nombre,edad,sexo) VALUES (",paste(datos[1,]),")")
Выполнив у меня выходит следующая ошибка:
Error in if (errors) return(odbcGetErrMsg(channel)) else
return(invisible(stat)) : argument is not interpretable as logical
Я надеюсь, что они могут помогать мне спасибо
Я вижу, что ты изменил твои данные, этот serГ - в правильный формат:
canal <- odbcConnect("PrMYSQL",uid = "root")
datos<-data.frame(codigo=1, nombre='alberto', edad=31,sexo= 'masculino')
guardar<-sqlQuery(canal, paste0("INSERT INTO alumnos (codigo,nombre,edad,sexo) VALUES ( '",datos$codigo,"', '",datos$nombre,"', '",datos$edad,"', '",datos$sexo,"' )" ) )
эта ошибка:
Error in if (errors) return(odbcGetErrMsg(channel)) else
return(invisible(stat)) : argument is not interpretable as logical
производится главным образом из-за неправильного использования paste
или paste0
Я согласовываю с Elenasys во что ошибку эта в paste (), но возможно использовать строку для консультации. Однако у тебя есть две проблемы, извлекли data.frame, созданного из-за as.data.frame, производятся факторы и эти превращаются в число, использовав паситесь, с другой стороны - проблема приложения колонн. Со следующим примером:
datos<-data.frame(nombre='alberto', edad=31,sexo= 'masculino')
Ты можешь прилагать твою цепь с do.call ()
do.call(paste, c(datos,sep=","))
[1] "alberto\",\"31\",\"masculino"
Первые и последние кавычки не считают, потому что это часть вывода R и только считают тех, которые предшествовались из-за \
Оставаясь тогда как:
canal <- odbcConnect("PrMYSQL",uid = "root")
datos<-data.frame(codigo=1, nombre='alberto', edad=31,
sexo= 'masculino')
guardar<-sqlQuery(canal, paste0('INSERT INTO alumnos
(codigo,nombre,edad,sexo) VALUES
("', do.call(paste, c(datos[1,],sep='","')),'")')
Я надеюсь, что это может подавать тебя.