データベーステーブルに更新したいグラフをいくつか作成しています。私が従う手順は次のとおりです。
- グラフを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)
データベースには、主キーDemandPatternIDを持つテーブルdf_DemandPatternMasterがあり、pngFileフィールドにNULL値を持つ適切なレコードがあります。
update.query <- "update df_DemandPatternMaster set "
update.query <- paste( update.query, " pngFile = '", serialize(pngfilecontents, NULL) , "' where DemandPatternID = ", , sep="")
d <- sqlQuery(connection, update.query)
1バイトのデータだけを挿入することになります。ペーストがシリアル化されたベクトルを見て、接頭辞と接尾辞のテキストを含むベクトルを作成するためと思われる理由です。また、pngファイルのハンドルを直接渡してみました
pngfile <- file(<filename>, "rb")
update.query <- paste( update.query, " pngFile = '", pngfile, "' where DemandPatternID = ", , sep="")
これも失敗します。
お知らせ下さい。