使用非常大的字段(8000个字符)将R数据集写入Oracle

时间:2017-08-02 18:19:30

标签: r oracle roracle

我需要使用R软件包ROracle版本1.3-1,R版本3.4.1,Oracle OraClient 11g主页将一个R数据集写入Oracle数据库,并且是R的新手。

数据集包含多种不同数据类型和长度的变量,包括多个字符类型,最多8000个字符。

使用dbWriteTable

dbWriteTable(conn, "OracleTableName", df)

我收到此错误:

Error in .oci.WriteTable(conn, name, value, row.names = row.names, 
overwrite = overwrite,  : 
  Error in .oci.GetQuery(con, stmt, data = value) : 
  ORA-01461: can bind a LONG value only for insert into a LONG column

或者

Error in .oci.GetQuery(con, stmt) : 
  ORA-02263: need to specify the datatype for this column

或者

drv <- 
  dbDriver("Oracle")
 conn <- 
  dbConnect(
     drv, 
    username = "username", 
    password = "password", 
    dbname = "dbname")
test.df1 <- subset(
  df, select=c(
    Var, Var2, Var3, 
    Var4, Var5, Var6))
dat <- as.character(test.df1)
attr(dat, "ora.type") <- "clob"
dbWriteTable(conn, "test2", dat)

返回此

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘dbWriteTable’ for 
signature ‘"OraConnection", "character", "character"’

从研究错误开始,似乎第一个错误表明Oracle中没有将更大的字段 - BLOB字段识别为BLOB。

文档表明ROracle 1.3-1应该能够处理更大的数据类型。它建议使用属性在dbWriteTable中正确映射NCHAR,CLOB,BLOB,NCLOB列。我无法成功地遵循此示例,因为我一直收到同样的错误。也许我只需要一个与文档中提供的不同的例子?

最初,我使用的是RODBC软件包,但发现RODBC无法处理大型数据类型(BLOB)。

感谢任何帮助或建议。

0 个答案:

没有答案