我正在尝试创建一个从MySQL服务器中提取数据的过程(使用RODBC包),对R中的数据执行一些统计例程,然后将生成的图保存回服务器,以便可以在通过一点点PHP和网络魔术的Web浏览器。
我的计划是通过使用RODBC包执行SQL insert into语句,将绘图保存在MySQL BLOB字段中。我想我可以直接将数据作为字符串插入。问题是,我如何获取数据字符串,这甚至可以工作吗?我最好的想法是使用savePlot函数来保存临时文件,然后以某种方式将其读回。
之前有人试过这个或者有关于如何处理此问题的建议吗?
答案 0 :(得分:2)
无论你认为这是一个可怕的想法,这是一个有效的答案,我可以从这个post
拼凑起来## 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)
在实施之前,我会确保做一些灵魂搜索以决定是否应该使用它而不是使用服务器文件系统。
答案 1 :(得分:0)
在数据库中存储图像通常不受欢迎。要在R中创建内存文件,可以使用textConnection作为连接。这会给你字符串。如果您不忘记设置正确的mime类型并以二进制形式打开连接,它将起作用。
答案 2 :(得分:0)
将绘图保存到服务器并将文件名写入数据库将起作用。但是这个叫做Rapache的东西可能有所帮助。此外,Jeroen Ooms还有一些在线demo,包括Hadley Wickham着名的R Graph软件包ggplot2的Web界面。