使用RJDBC将R数据帧写入Teradata 我们希望在teradata中的表中插入数据帧。所以我们连接到数据库

使用RJDBC将R数据帧写入Teradata 我们希望在teradata中的表中插入数据帧。所以我们连接到数据库,r,teradata,rjdbc,R,Teradata,Rjdbc,因此,我们创建了一个数据帧: column1<-c(1,2,3,4) column2<-c("bar1","bar2","bar3","bar4") df=data.frame(column1,column2) 然后出现以下错误: "Error in .local(conn, statement, ...) : execute JDBC update query failed in d

因此,我们创建了一个数据帧:

column1<-c(1,2,3,4)
column2<-c("bar1","bar2","bar3","bar4")
df=data.frame(column1,column2)
然后出现以下错误:

"Error in .local(conn, statement, ...) : execute JDBC update query failed in     dbSendUpdate ([Teradata Database] [TeraJDBC 15.10.00.33] [Error 3706] [SQLState     42000] Syntax error: expected something between ')' and '('.)"
第二种方法是首先创建一个表,然后尝试附加数据帧

dbSendUpdate(conn,"create table temp.test_table(a int,b varchar(100))")
dbWriteTable(conn,"temp.test_table", df,row.names=F,overwrite=F,append = T)
这会导致以下错误:

Error in .local(conn, name, value, ...) : Cannot append to a non-existing table `temp.test_table'
Error in .local(conn, statement, ...) : execute JDBC update query failed in dbSendUpdate ([Teradata Database] [TeraJDBC 15.10.00.33] [Error 3803] [SQLState 42S01] Table 'test_table' already exists.)
当我们使用dbListTables()检查表是否存在时,表确实存在。(但如果使用dbExistTable(),则不会)

在第三次尝试中,我们尝试覆盖而不是附加数据

dbWriteTable(conn,"temp.test_table", df,row.names=F,overwrite=T,append = F)
这将导致以下错误:

Error in .local(conn, name, value, ...) : Cannot append to a non-existing table `temp.test_table'
Error in .local(conn, statement, ...) : execute JDBC update query failed in dbSendUpdate ([Teradata Database] [TeraJDBC 15.10.00.33] [Error 3803] [SQLState 42S01] Table 'test_table' already exists.)
现在它声明表已经存在(这应该可以,因为我们想覆盖它)。但该表不会被覆盖

总而言之,我们正在寻找一种将数据帧从r写入teradata数据库的解决方案


有人知道如何处理这个问题吗?

你看到了吗?这可能是由于Teradata的JDBC驱动程序中的错误造成的……我也有同样的问题。有人回答过这个问题吗?你见过吗?这可能是由于Teradata的JDBC驱动程序中的错误造成的……我也有同样的问题。有人回答过这个问题吗?