我使用包RODBC中的函数sqlSave()将数据写入属于另一个模式的表中。另一个模式的用户发出了一个与原始表同名的别名。我的用户有足够的权限写入表中。该数据库是Oracle 11g。
这就是我的写作方式:
sqlSave(channel, object, tablename = table, safer=TRUE, rownames = FALSE, append = TRUE, verbose = FALSE, nastring = NULL, fast = TRUE)
当我运行sqlSave()时,我收到来自Oracle DB的错误消息。如果我查看R发送给DB的SQL,我看到R将我尝试编写的对象的列加倍。 SQL看起来像这样:
insert into table (column_A, column_B, column_A, column_B)
如果别名被删除并且我使用模式作为表的前缀而不是我没有收到任何错误消息,但是R不会在所有查询中执行。
sqlSave(channel, object, tablename = schema.table, safer=TRUE, rownames = FALSE, append = TRUE, verbose = FALSE, nastring = NULL, fast = TRUE)
然后我得到:
insert into table (column_A, column_B) values(?,?)
它到目前为止唯一的工作是为表分配一个不同的别名作为表名。在那种情况下,我设法写在表中。
如果有人能为我的问题提出解决方案,我将非常感激。 提前感谢您的回复