Как загрузить изображение на SQL Server в R
Вопрос
Я создаю несколько графиков, которые хочу обновить в таблицу базы данных.Процедура, которой я следую:
- создайте графики в формате 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 и соответствующей записью со значением 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, так и без него.
У меня нет простой среды для тестирования вашего кода, но мне интересно, что вы придумаете.Я работаю над кодом, в котором в конечном итоге буду сериализовать объекты и помещать их в БД.Я просто еще не дошел до этого.