我正在创建一些要更新到数据库表中的图表。我遵循的程序是:
- 将图形创建为 png/jpeg 文件。
- 将该文件作为二进制向量读取
- sqlUpdate
我的第 2 步和第 3 步代码:
pngfile <- file(<filename>, "rb")
N <- 1e6
repeat{
pngfilecontents <- readBin(pngfile, what="raw", n=N)
if(length(pngfilecontents) == N) N <- 5 * N else break
}
close(pngfile)
数据库中有一个 df_DemandPatternMaster 表,主键 DemandPatternID,在 pngFile 字段中有适当的记录和 NULL 值。
update.query <- "update df_DemandPatternMaster set "
update.query <- paste( update.query, " pngFile = '", serialize(pngfilecontents, NULL) , "' where DemandPatternID = ", , sep="")
d <- sqlQuery(connection, update.query)
我最终只插入一个字节的数据。原因似乎是 paste 看到序列化的向量并创建一个带有前缀和后缀文本的向量。我也尝试过直接传递 png 文件句柄
pngfile <- file(<filename>, "rb")
update.query <- paste( update.query, " pngFile = '", pngfile, "' where DemandPatternID = ", , sep="")
这也失败了。
请指教。