1

OracleデータベースにCLOB値として格納されているデータを読み込もうとしています。コンテンツは、CRMアプリケーションを介して送信する電子メールをレンダリングするHTMLです。メールの画像を再作成して、crmのパフォーマンスに関するレポートに含めたいと思います。

次のクエリを使用してデータを正常に読み取ることができSPSSます。このクエリは、CLOBを長さの文字列(32750)に変換します。

GET DATA
  /TYPE=ODBC
  /CONNECT='DSN=<MYDSN>;UID=<USER>;PWD=mypassword;Host=myhost;Port=myport;SID='+
    'SID'
  /SQL='SELECT *  FROM mytable'
  /ASSUMEDSTRWIDTH=32750.
CACHE.
EXECUTE.
DATASET NAME clob_query WINDOW=FRONT.

私が探しているのは、同様のクエリを実行することですが、データをRに読み込みます。次のクエリを試行したところ、以下のエラーが発生しました。

> SQL <-"SELECT to_char(CONTENT) as content from REL_EMAIL_TEMPLATE"
> ds <- sqlQuery(ch, SQL, as.is=T, stringsAsFactors=F)
> ds
[1] "HY000 22835 [Oracle][ODBC][Ora]ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 5923, maximum: 4000)\n"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'SELECT to_char(CONTENT) as content from REL_EMAIL_TEMPLATE'"   

「バッファ」を大きくする方法はわかりませんが、SPSSでこれを実行するため、Rでもこれを実行できる必要があると考えています。

よろしくお願いします。

4

2 に答える 2

2

投稿する前にこの解決策を試したに違いないように感じますが、この問題に戻って実行することができました。

今回の唯一の違いは、WHERE句を使用して1つのレコードのみをRにプルしようとしたことです。

これが私の質問です:

SQL <- "SELECT TO_CHAR(CONTENT) FROM RELATEMGR.REL_EMAIL_TEMPLATE WHERE primary_key = 1"
body <- sqlQuery(ch, SQL, stringsAsFactors=F)

変。Rの別のバージョンも重要かどうかはわかりませんが、少なくともこれにより、必要な場所にたどり着きました。

完全を期すために:

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RODBC_1.3-6

loaded via a namespace (and not attached):
[1] tools_2.15.0
于 2012-11-15T14:32:06.473 に答える
0

これを試してください。TO_CHARの最大サイズは4000です。

"SELECT dbms_lob.substr(CONTENT, 32767, 1 ) AS content FROM REL_EMAIL_TEMPLATE"
于 2012-08-31T14:43:58.817 に答える