1

我需要使用 R 包 ROracle 版本 1.3-1、R 版本 3.4.1、Oracle OraClient 11g home 将 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"’

通过研究错误,第一个错误似乎表明较大的字段 - BLOB 字段 - 未被 Oracle 识别为 BLOB。

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

最初,我使用的是 RODBC 包,但发现已知 RODBC 不处理大型数据类型 (BLOB)。

任何帮助或建议表示赞赏。

4

0 回答 0