Frage

Ich schaffe einige Grafiken, die ich möchte in einer Datenbanktabelle aktualisieren. Das Verfahren verfolge ich ist:

  1. Erstellen Sie die Graphen als png / JPEG-Datei.
  2. Lesen Sie die Datei als binären Vektor
  3. SQLUpdate

Mein Code für die Schritte 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)

Es gibt eine Tabelle df_DemandPatternMaster in der Datenbank mit Primärschlüssel DemandPatternID, mit entsprechendem Datensatz anstelle mit NULL-Wert in pngFile Feld.

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

ich nur ein Datenbyte Einfügen am Ende. Der Grund, es scheint, dass Paste die serialisierte Vektor sieht und erzeugt einen Vektor mit dem Präfix & Suffix Text. Ich habe auch direkt die PNG-Datei Griff versucht, vorbei

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

Dies scheitert auch.

Bitte beraten.

War es hilfreich?

Lösung

Vielleicht, wenn Sie den pngfilecontents Vektor in einem einzigen String zusammenbrechen. So etwas wie:

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

Andere Tipps

Ich habe dies mit einer Datenbank nicht ausprobiert, aber ich hatte vor kurzem einige Herausforderungen bei der zu / von einer Textdatei Serialisierung. Hier ist eine Frage, fragte ich das könnte verwandter sein. Haben Sie versucht, die ascii = T-Schalter mit serialize verwenden? Dann versuchen Sie es sowohl mit als auch ohne rawToChar.

Ich habe nicht eine einfache Umgebung, um Ihren Code zu testen, aber ich bin daran interessiert, was Sie kommen mit. Ich arbeite an einigen Code, wo ich schließlich Objekte serialisiert werden und sie in einem DB setzen. Ich bin nur nicht zu diesem Zeitpunkt noch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top