Как загрузить изображение на SQL Server в R

StackOverflow https://stackoverflow.com/questions/2296325

  •  21-09-2019
  •  | 
  •  

Вопрос

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

  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)

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

pngfile <- file(<filename>, "rb")
update.query <- paste( update.query, " pngFile = '", pngfile, "' where DemandPatternID = ", , sep="")

Это также не удается.

Пожалуйста, порекомендуйте.

Это было полезно?

Решение

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

update.query <- "update df_DemandPatternMaster set "
update.query <- paste( update.query, " pngFile = '", paste(pngfilecontents, collapse="") , "' where DemandPatternID = ", sep="")

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top