Как загрузить изображение на SQL Server в R - PullRequest
4 голосов
/ 19 февраля 2010

Я создаю несколько графиков, которые хочу обновить в таблицу базы данных. Процедура, которой я придерживаюсь:

  1. создать графики в виде файла png / jpeg.
  2. Читать этот файл как двоичный вектор
  3. 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, с соответствующей записью на месте со значением NULL в поле pngFile.

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="")

Это также не помогает.

Пожалуйста, сообщите.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2010

Возможно, если вы свернете вектор pngfilecontents в одну строку. Что-то вроде:

update.query <- "update df_DemandPatternMaster set "
update.query <- paste( update.query, " pngFile = '", paste(pngfilecontents, collapse="") , "' where DemandPatternID = ", sep="")
0 голосов
/ 19 февраля 2010

Я не пробовал это с базой данных, но у меня недавно были некоторые проблемы при сериализации в / из текстового файла. Вот вопрос, который я задал и который может быть связан . Вы пытались использовать переключатель ascii = T с serialize? Затем попробуйте как с rawToChar, так и без него.

У меня нет легкой среды для тестирования вашего кода, но мне интересно, что вы придумали. Я работаю над некоторым кодом, где я в конечном итоге буду сериализовывать объекты и помещать их в БД. Я просто еще не до этого момента.

...