在我的一个R项目中,我正在使用以下代码将一些用户信息插入PostgreSQL数据库中,但是现在我想将其切换到SQL Server。不幸的是,这失败了。
library(DBI)
conn <- #database connection
# data$data is a list
dbExecute(
conn,
"INSERT INTO users (user_uuid, user_firstname, user_lastname, user_email,
user_role, owner_uuid, user_password, flag_user_active) VALUES ($1, $3, $4, $5, $6, $7, $2, TRUE)",
params = c(
list(user_uuid),
list(user_password_encrypted),
unname(data$data)
)
)
我感觉到SQL Server处理的参数化查询不同于PostgreSQL,但是不幸的是,我无法找到有关如何修改它的明确答案,因此它运行良好。我希望有人可以立即得到这个答案。谢谢!
下面的代码可以完成SQL Server的工作,但它不如适用于PostgreSQL的问题中的代码那么好。主要缺点是您不能像在PostgreSQL中那样引用VALUES中的变量。
library(DBI)
conn <- #database connection
# data$data is a list
dbExecute(
conn,
"INSERT INTO users (user_uuid, user_firstname, user_lastname, user_email,
user_role, owner_uuid, user_password, flag_user_active) VALUES (?, ?, ?, ?, ?, ?)",
params = c(
list(user_uuid),
list(user_password_encrypted),
unname(data$data)
)
)
请注意,参数的顺序必须与INSERT语句中的顺序相同。