Я пытаюсь создать процедуру, которая извлекает данные из сервера MySQL (использующий пакет RODBC), выполняет некоторые статистические стандартные программы на тех данных в R, затем сохраняет сгенерированные графики назад к серверу, таким образом, что они могут быть получены в веб-браузере через определенные php и веб-волшебство.
Мой план состоит в том, чтобы сохранить график в поле MySQL BLOB при помощи пакета RODBC для выполнения, SQL вставляют в оператор. Я думаю, что могу вставить данные непосредственно как строку. Проблема, как я получаю строку данных, и это будет даже работать? Моя лучшая мысль состоит в том, чтобы использовать функцию savePlot, чтобы сохранить временный файл, и затем читать это въезжает задним ходом так или иначе.
Кто-либо попробовал это прежде, или имейте предложения о том, как приблизиться к этому?
Независимо от того, считаете ли вы это ужасной идеей, вот рабочий ответ, который я смог собрать воедино из этого поста
## open connection
library(RODBC)
channel <- odbcConnect("")
## generate a plot and save it to a temp file
x <- rnorm(100,0,1)
hist(x, col="light blue")
savePlot("temp.jpg", type="jpeg")
## read back in the temp file as binary
plot_binary <- paste(readBin("temp.jpg", what="raw", n=1e6), collapse="")
## insert it into a table
sqlQuery(channel, paste("insert into test values (1, x'",plot_binary,"')", sep=""))
## close connection
odbcClose(channel)
Перед реализацией я обязательно проведу некоторую работу над собой, чтобы решить, стоит ли использовать это вместо использования файловой системы серверов.
Хранение изображений в базах данных часто не одобряется. Для создания файла в памяти в R вы можете использовать textConnection в качестве соединения. Это даст вам строку. Это сработает, если вы не забудете установить правильный тип mime и откроете соединение как двоичное.
Сохраните график на сервере и запишите имя файла в базу данных. Будет работать. Но тут может помочь штука под названием Rapache. Кроме того, у Джеруна Оомса есть онлайн-демонстрация , в том числе веб-интерфейс для известного пакета R Graph ggplot2 Хэдли Уикхема.