我需要使用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)。
感谢任何帮助或建议。