将 R 图保存到 Web 服务器

发布于 2024-09-11 00:32:54 字数 296 浏览 4 评论 0原文

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

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

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

I'm trying to create a procedure which extracts data from a MySQL server (using the RODBC package), performs some statistical routines on that data in R, then saves generated plots back to the server such that they can be retrieved in a Web Browser via a little bit of php and web magic.

My plan is to save the plot in a MySQL BLOB field by using the RODBC package to execute a SQL insert into statement. I think I can insert the data directly as a string. Problem is, how do I get the data string and will this even work? My best thought is to use the savePlot function to save a temp file and then read it back in somehow.

Anybody tried this before or have suggestions on how to approach this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

染柒℉ 2024-09-18 00:32:54

不管你是否认为这是一个糟糕的主意,这里有一个我能够从中拼凑出来的可行答案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)

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

Regardless of if you think this is a terrible idea, here is a working answer I was able to piece together from this 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)

Before implementation, I'll make sure to do some soul searching to decide if this should be used rather than using the servers file system.

能怎样 2024-09-18 00:32:54

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

Storing images in databases is often frowned upon. To create an in memory file in R you can use a textConnection as a connection. This will give you the string. It will work if you don't forget to set the proper mime type and open the connection as binary.

古镇旧梦 2024-09-18 00:32:54

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

Save the plot to a server and write the filename into the database will work. But there's this thing called Rapache may help. Plus, Jeroen Ooms has some online demo, including a web interface for Hadley Wickham's famous R Graph package ggplot2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文