5

データベーステーブルに更新したいグラフをいくつか作成しています。私が従う手順は次のとおりです。

  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)

データベースには、主キー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="")

これも失敗します。

お知らせ下さい。

4

2 に答える 2

2

おそらく、pngfilecontentsベクトルを単一の文字列に折りたたむ場合。何かのようなもの:

update.query <- "update df_DemandPatternMaster set "
update.query <- paste( update.query, " pngFile = '", paste(pngfilecontents, collapse="") , "' where DemandPatternID = ", sep="")
于 2010-02-20T03:46:31.517 に答える
0

データベースでこれを試したことはありませんが、最近、テキストファイルとの間でシリアル化するときにいくつかの課題がありました。これが私が尋ねた質問です。シリアル化でascii=Tスイッチを使用してみましたか?次に、rawToCharを使用する場合と使用しない場合の両方で試してください。

私はあなたのコードをテストするための簡単な環境を持っていませんが、私はあなたが思いついたものに興味があります。私は、最終的にオブジェクトをシリアル化してDBに配置するコードに取り組んでいます。私はまだその点に到達していません。

于 2010-02-19T16:25:16.033 に答える