首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入表RODBC

插入表RODBC
EN

Stack Overflow用户
提问于 2017-04-24 14:49:56
回答 1查看 3.2K关注 0票数 0

我想在oracle数据库中的现有表中插入dataframe的内容。

代码语言:javascript
复制
sqlSave(conn, df[1:3,c(which(names(df) == "x"), which(names(df) == "y"), which(names(df) == "z")], tablename = "A_X", append = TRUE) 

我得到了错误Error in odbcUpdate(channel, query, mydata, coldata[m, ], test = test, : missing columns in »data«,因为选中的列与表的列不匹配。

oracle表有比数据帧更多的列,因此不匹配的列应该使用NULL填充。我如何在R中实现这一点?我想在下面的SQL代码中包含df的内容如下:

代码语言:javascript
复制
 INSERT INTO A_X
              VALUES (df[1:3,c(which(names(df) == "x"), which(names(df) == "y"), which(names(df) == "z")], AUTO_ID, NULL,  NULL);

在Oracle SQL中,使用以下代码可以做到这一点:

代码语言:javascript
复制
INSERT INTO A_X
              VALUES (300, 'text', 'text', AUTO_ID, NULL,  NULL);

第二个问题是自动生成ID AUTO_ID。我有Oracle DB 11.2.0.3版本,目前不可能更新到12c版本。

EN

回答 1

Stack Overflow用户

发布于 2017-04-25 13:44:54

这是另一种方法。

不只是使用sqlSave,而是使用来自RODBCsqlSave & sqlQuery或来自DBIdbExecute的组合。

然后,可以将df编写为永久表或临时表,然后用INSERTUPDATE语句包装sqlQuery,以便对目标表和临时表进行操作。这并不是很优雅,但是应该为您提供一个可伸缩的解决方案,即使将来模式会发生变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43591313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档