我很难将新的一行数据添加到现有的Server数据库中。
这些:
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_val是df2中的第一个列值。
走sqlSave路线:
sqlSave(con, df2, tablename = "df1", append = TRUE, rownames = FALSE, colnames = FALSE)引发内存分配错误:
odbcUpdate中的错误(通道、查询、mydata、coldatam、test = test:'Calloc‘无法分配内存(1个字节的1073741824)
发布于 2018-06-13 14:55:10
假设df1和df2中的列的名称和顺序是相同的,那么应该可以这样做:
query <-
paste0("INSERT INTO df1 ",
"(", paste0(names(df2), collapse = ", "), ") ",
"VALUES (",
paste0(rep("?", length(df2)), collapse = ", "), ")")
library(RODBCext)
sqlExecute(con,
query,
data = df2)当使用mtcars作为df1时,编写的查询如下所示。
"INSERT INTO df1 (mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb) VALUES ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"这允许您生成将所有列名添加到查询中的语句,而不必手动声明它们。使用sqlExecute调用参数化查询。然后将问号绑定到数据,然后作为语句的一部分执行。
发布于 2018-06-13 14:42:01
试一试
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2如果您想要表2中的列
INSERT INTO table1 ( column1, column2, someInt, someVarChar )
SELECT table2.column1, table2.column2, 8, 'some string etc.'
FROM table2https://stackoverflow.com/questions/50838688
复制相似问题