Pregunta

Estoy creando algunos gráficos que quiero actualizar la base de datos en una tabla. El procedimiento que sigo es:

  1. crear los gráficos como un archivo PNG / jpeg.
  2. Leer ese archivo como un vector binario
  3. SQLUpdate

Mi código para los pasos 2 y 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)

Hay una mesa df_DemandPatternMaster en la base de datos con DemandPatternID clave principal, con un registro apropiado en el lugar con valor NULL en el campo pngFile.

update.query <- "update df_DemandPatternMaster set "
update.query <- paste( update.query, " pngFile = '", serialize(pngfilecontents, NULL) , "' where DemandPatternID = ", , sep="")
d <- sqlQuery(connection, update.query)

Me acaban de insertar solamente un byte de datos. La razón parece es que la pasta ve el vector serializado y crea un vector con el prefijo y sufijo de texto. También he tratado de pasar el identificador de archivo PNG directamente

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

Esto también falla.

Por favor avise.

¿Fue útil?

Solución

Tal vez si se cae el vector pngfilecontents en una sola cadena. Algo así como:

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

Otros consejos

No he intentado esto con una base de datos, pero tuve algunos problemas recientemente cuando la serialización a / desde un archivo de texto. He aquí una pregunta pregunté que podría ser relacionada. ¿Ha intentado utilizar el interruptor de ascii = T con serializar? A continuación, intente con y sin rawToChar.

No tengo un entorno fácil de probar su código, pero estoy interesado en lo que ocurra. Estoy trabajando en algo de código en el que el tiempo será seria objetos y ponerlos en una base de datos. No soy sólo a ese punto todavía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top