增加Teradata JDBC驱动程序最大字节长度的R代码

增加Teradata JDBC驱动程序最大字节长度的R代码,r,jdbc,teradata,rjava,rjdbc,R,Jdbc,Teradata,Rjava,Rjdbc,我试图通过RJDBC使用大容量插入,将一些相当大的几何体对象从R导出到teradata。问题是有些对象超过64000个字符: .jcall(ps,“V”,“addBatch”)中出错: java.sql.SQLException: [Teradata JDBC驱动程序][TeraJDBC 16.00.00.28][Error 1186][SQLState HY000]参数2的长度为89190字节,大于 可设置的最大64000字节 看起来有可能增加CLOB列的限制,但我还没有找到实现这一点的R代码

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

.jcall(ps,“V”,“addBatch”)中出错:
java.sql.SQLException: [Teradata JDBC驱动程序][TeraJDBC 16.00.00.28][Error 1186][SQLState HY000]参数2的长度为89190字节,大于 可设置的最大64000字节

看起来有可能增加CLOB列的限制,但我还没有找到实现这一点的R代码:

下面是我的插入代码:

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")

myinsert您的
myinsert
方法做什么?编辑您的问题,不要对此使用注释。@markrottevel my bad,Edit我想您需要扩展您的
myinsert
,然后修改它,将其包装在
StringReader
中,并按照您链接的问题所建议的使用
setCharacterStream
。顺便问一下:R中没有库可以完成所有这些繁重的工作吗?您对JDBC API的JNI/反射类型访问似乎相当痛苦。您的
myinsert
方法做什么?编辑您的问题,不要对此使用注释。@MarkrotVeel my bad,edite我认为您需要扩展
myinsert
,然后修改它,将其包装在
StringReader
中,并按照您链接的问题所建议的使用
setCharacterStream
。顺便问一下:R中没有库可以完成所有这些繁重的工作吗?您对JDBCAPI的JNI/反射类型访问似乎相当痛苦。