2010-02-19 4 views
3

데이터베이스 테이블로 업데이트하려는 일부 그래프를 만들고 있습니다. 내가 따르는 절차는 다음과 같습니다 :이미지를 SQL Server에 업로드하는 방법

  1. 그래프를 png/jpeg 파일로 생성하십시오. 기본 키 DemandPatternID와 데이터베이스의 테이블 df_DemandPatternMaster 적절한으로,

    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) 
    

    있습니다 :

  2. 이진 벡터로 & 3 단계 2
  3. sqlUpdate

내 코드를 해당 파일을 읽기 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) 

결국 데이터의 바이트 만 삽입됩니다. 그 이유는 붙여 넣기가 직렬화 된 벡터를보고 접미사 문자 &이있는 벡터를 생성하기 때문입니다. 나는 또한 pngfile 직접

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

이 또한 실패 처리 통과 노력했다.

알려 주시기 바랍니다.

+0

밀접하게 관련 질문 : 같은 뭔가 http://stackoverflow.com/questions/2045837/how-to-save-r-plot-image-to-database – Shane

답변

2

아마도 pngfilecontents 벡터를 단일 문자열로 접는 경우입니다.

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

감사 마크. 붙여 넣기 (pngfilecontents, collapse = "")가 작동합니다. 나는 JD Long의 제안을 시도하지 않았다. –

+0

@Baan, 오신 것을 환영합니다. 가능하면 왼쪽의 체크 표시를 클릭하여이 대답을 표시하십시오. 이것은 답이없는 질문을 정리하고 나는 평판 포인트를 주셔서 감사합니다 :) – Mark

0

데이터베이스로 시도하지는 않았지만 최근에는 텍스트 파일과 직렬화 할 때 몇 가지 문제점이있었습니다. 여기에 question I asked that might be related이 있습니다. 당신은 ascii = T 스위치를 사용하여 직렬화를 시도 했습니까? 그런 다음 rawToChar를 사용하거나 사용하지 않고 둘 다 시도하십시오.

코드를 테스트 할 수있는 쉬운 환경이 아니지만, 여러분이 생각해내는 것에 관심이 있습니다. 나는 결국 객체를 직렬화하여 DB에 넣을 코드를 만들고 있습니다. 나는 아직 그 시점에 이르지 못한다.

관련 문제