10

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

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

有人以前尝试过这个,或者对如何解决这个问题有建议吗?

4

3 回答 3

3

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

## 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)

在实施之前,我会确保做一些灵魂搜索来决定是否应该使用它而不是使用服务器文件系统。

于 2010-07-20T13:28:32.377 回答
0

将图像存储在数据库中通常是不受欢迎的。要在 R 中创建内存文件,您可以使用textConnection作为连接。这会给你字符串。如果您没有忘记设置正确的 mime 类型并将连接打开为二进制文件,它将起作用。

于 2010-07-19T21:50:45.723 回答
0

将绘图保存到服务器并将文件名写入数据库将起作用。但是有一个叫做 Rapache 的东西可能会有所帮助。另外,Jeroen Ooms 有一些在线演示,包括 Hadley Wickham 著名的 R Graph 包 ggplot2 的 Web 界面。

于 2010-07-21T11:52:20.040 回答