سؤال

أقوم بإنشاء بعض الرسوم البيانية التي أريد تحديثها في جدول قاعدة البيانات. الإجراء الذي أتابعه هو:

  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 في قاعدة البيانات مع quirepatternid الأساسي ، مع وجود سجل مناسب مع قيمة فارغة في حقل PNGFILE.

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

انتهى بي الأمر إلى إدراج بايت فقط من البيانات. والسبب هو أن Paste يرى المتجه المسلسل ويخلق متجهًا مع نص البادئة واللاحقة. لقد حاولت أيضًا تمرير مقبض ملف 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