Question

Je crée des graphiques que je veux mettre à jour dans une table de base de données. La procédure que je suis suivante est:

  1. créer les graphiques sous forme de fichier png / jpeg.
  2. Lire ce fichier en tant que vecteur binaire
  3. SQLUpdate

Mon code pour les étapes 2 et 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)

Il y a une table df_DemandPatternMaster dans la base de données avec DemandPatternID clé primaire, avec enregistrement approprié en place avec la valeur NULL dans le champ pngFile.

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

Je finis par l'insertion, seulement un octet de données. La raison pour laquelle il semble que la pâte voit le vecteur sérialisés et crée un vecteur avec le texte de préfixe et suffixe. J'ai aussi essayé passer la poignée de fichier directement .png

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

Cela échoue également.

S'il vous plaît conseiller.

Était-ce utile?

La solution

Peut-être que si vous réduisez le vecteur de pngfilecontents en une seule chaîne. Quelque chose comme:

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

Autres conseils

Je ne l'ai pas essayé avec une base de données, mais j'ai eu quelques difficultés récemment lors de la sérialisation vers / à partir d'un fichier texte. Voici une question j'ai demandé qui pourrait être lié . Avez-vous essayé d'utiliser l'ascii = T commutateur avec serialize? Ensuite, essayez avec et sans rawToChar.

Je n'ai pas un environnement facile à tester votre code, mais je suis intéressé par ce que vous venez avec. Je travaille sur un code où je vais finir par être des objets sérialisation et les mettre dans un DB. Je suis tout simplement pas à ce moment-là encore.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top