将R绘图保存到Web服务器

sto*_*tic 9 mysql r rodbc

我正在尝试创建一个从MySQL服务器中提取数据的过程(使用RODBC包),对R中的数据执行一些统计例程,然后将生成的图保存回服务器,以便可以在Web浏览器中检索它们通过一点点的PHP和网络魔术.

我的计划是通过使用RODBC包来执行SQL插入语句,将绘图保存在MySQL BLOB字段中.我想我可以直接将数据作为字符串插入.问题是,我如何获取数据字符串,这甚至可以工作吗?我最好的想法是使用savePlot函数来保存临时文件,然后以某种方式将其读回.

有人曾经尝试过这个或者有关于如何处理这个问题的建议吗?

sto*_*tic 4

不管你是否认为这是一个糟糕的主意,这里有一个我从这篇文章中拼凑出来的可行答案

## 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)
Run Code Online (Sandbox Code Playgroud)

在实现之前,我将确保进行一些自我反省来决定是否应该使用它而不是使用服务器文件系统。

  • 好的,不要将图像存储在数据库中,因为所有已知的低效率都会造成这种情况,而是将渲染的 JPEG 上传到 Web 服务器: `system("scp temp.jpg my.server.com:/var/www/html/ images/my-analysis.jpg")` 哦,顺便说一句,您可能应该使用 PNG 来显示统计图形,而不是 JPEG。 (2认同)