2015-05-13 5 views
2

Я успешно подключился к базе данных MYSQL и попытался вернуть свой результат в базу данных: dbWriteTable(con,"predicted min",forecast$min) где прогноз $ min - это всего лишь вектор удвоений.Как решить эту ошибку - dbWriteTable()

Я получил сообщение об ошибке:

Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘dbWriteTable’ for signature ‘"MySQLConnection", "character", "numeric"’

Я предполагаю, что я нужен объект dataframe для моего третьего параметра, поэтому я попытался это: dbWriteTable(con,"predicted min",data.frame(min=forecast0.1$min))

Но получил эту ошибку:

Error in .local(conn, statement, ...) : could not run statement: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( row_names text, min double )' at line 2

Я использую SQLyog. Я не знаю, связано ли это с этой проблемой. Какие-либо предложения? Заранее спасибо.

Sophie

ответ

3

SQLyog не имеет отношения к данной проблеме. Если ваша таблица имеет только один столбец (мин), вам не нужно писать имена строк в кадре данных в таблицу. Попробуйте:

dbWriteTable(con,"predicted min",data.frame(min=forecast0.1$min), row.names = FALSE, append = TRUE) 

Или вы вставляете кортеж с двумя значениями в таблицу с одним столбцом. Если таблица уже существует и вы не хотите перезаписывать таблицу, вы также должны иметь append = TRUE.

Редактировать: Имя таблицы не должно содержать пробела.

+0

Привет @Josh, он по-прежнему дает мне второе сообщение об ошибке, ошибку в синтаксисе SQL. – Sophie

+0

Вы всегда можете просто скомпоновать свой собственный оператор INSERT. I.e., 'query = sprintf (" INSERT INTO% s (min) VALUES (% d) ", tablename, forecast0.1 $ min)'. Затем 'sqlQuery (канал, запрос)'. И сделайте это для каждой строки. Это предполагает, что таблица уже существует. Также вы уверены, что в вашем имени таблицы есть пробел? Не уверен, что это сработает. –

+0

Спасибо, что напомнил мне. Имя таблицы (не должно быть пробела) дает мне ошибку. Спасибо, @Josh – Sophie

Смежные вопросы