我需要使用 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)。
任何帮助或建议表示赞赏。