Если предположить, что имена и порядок столбцов в 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
as df1
.
"INSERT INTO df1 (mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb) VALUES ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"
Это позволяет вам генерировать оператор, который добавляет все имена столбцов в запрос без необходимости их объявления вручную.Использование sqlExecute
вызывает параметризованный запрос.Затем вопросительные знаки привязываются к вашим данным и затем выполняются как часть инструкции.