1

我正在尝试使用通过 RJDBC 的批量插入将一些相当大的几何对象从 R 导出到 teradata。问题是一些对象超过 64000 个字符:

.jcall(ps, "V", "addBatch") 中的错误:
java.sql.SQLException: [Teradata JDBC Driver] [TeraJDBC 16.00.00.28] [Error 1186] [SQLState HY000] 参数 2 长度为 89190 字节,即大于可以设置的最大 64000 字节。

看起来可以增加 CLOB 列的这个限制,但我无法弄清楚 R 代码来做到这一点:

数据库在尝试将大小为 2MB 的文件存储为 BLOB 数据时引发异常

然后这是我的插入代码:

myinsert <- function(...){
  kwargs <- list(...)
  for(i in seq_along(kwargs)) {
    .jcall(ps,"V","setString",as.integer(i), as.character(kwargs[i]))
  }
  .jcall(ps,"V","addBatch")
}
dbSendUpdate(conn, paste0("create table ", table_empty, "(SEA_ID INTEGER, poly SYSUDTLIB.ST_Geometry);"))
.jcall(conn@jc,"V","setAutoCommit",FALSE)
ps = .jcall(conn@jc,"Ljava/sql/PreparedStatement;","prepareStatement", paste0("insert into ", table_empty, " values(?, ?)"))

for(n in 1:nrow(polys_td)){ 
  myinsert(polys_td$SEA_ID[[n]], polys_td$poly[[n]])
}
.jcall(ps,"[I","executeBatch")
4

0 回答 0