首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将单行R data.frame插入Server数据库?

如何将单行R data.frame插入Server数据库?
EN

Stack Overflow用户
提问于 2018-06-13 13:38:03
回答 2查看 1.9K关注 0票数 0

我很难将新的一行数据添加到现有的Server数据库中。

这些:

代码语言:javascript
运行
复制
sqlQuery(con, paste("INSERT INTO df1 SELECT * FROM df2"))

sqlQuery(con, paste("INSERT INTO df1 SELECT * FROM ", df2))

sqlQuery(con, paste("INSERT INTO df1 SELECT * FROM ", sqldf("SELECT * FROM df2")))

所有这些都会产生错误:

1 "42S02 -1305 Microsoft Microsoft Jet数据库引擎找不到输入表或查询‘col_val’。请确保它存在,并确保其名称拼写正确。“ 2 "RODBC错误:无法SQLExecDirect‘插入df1选择*从col_1_val'“

col_1_valdf2中的第一个列值。

sqlSave路线:

代码语言:javascript
运行
复制
sqlSave(con, df2, tablename = "df1", append = TRUE, rownames = FALSE, colnames = FALSE)

引发内存分配错误:

odbcUpdate中的错误(通道、查询、mydata、coldatam、test = test:'Calloc‘无法分配内存(1个字节的1073741824)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-13 14:55:10

假设df1df2中的列的名称和顺序是相同的,那么应该可以这样做:

代码语言:javascript
运行
复制
query <- 
  paste0("INSERT INTO df1 ",
         "(", paste0(names(df2), collapse = ", "), ") ",
         "VALUES (",
         paste0(rep("?", length(df2)), collapse = ", "), ")")

library(RODBCext)

sqlExecute(con, 
           query,
           data = df2)

当使用mtcars作为df1时,编写的查询如下所示。

代码语言:javascript
运行
复制
"INSERT INTO df1 (mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb) VALUES ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"

这允许您生成将所有列名添加到查询中的语句,而不必手动声明它们。使用sqlExecute调用参数化查询。然后将问号绑定到数据,然后作为语句的一部分执行。

票数 2
EN

Stack Overflow用户

发布于 2018-06-13 14:42:01

试一试

代码语言:javascript
运行
复制
INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2

如果您想要表2中的列

代码语言:javascript
运行
复制
INSERT INTO table1 ( column1, column2, someInt, someVarChar )
SELECT  table2.column1, table2.column2, 8, 'some string etc.'
FROM    table2
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50838688

复制
相关文章

相似问题

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