Я несколько раз пытался запустить параметризованные операторы SQL с помощью пакета RPostgreSQL
в R. Я смог запустить параметризованные операторы, используя позиционные аргументы, однако мне не повезло с именованными аргументами.Возможно ли это в RPostgreSQL?
library(DBI)
# Connect to Database
con = dbConnect(...) # connection secrets hidden in .Rprofile
create_products_sql =
"CREATE TABLE products (product_no SERIAL PRIMARY KEY, name text, price numeric);"
dbExecute(con, create_products_sql)
products = data.frame(product_no = 1:4,
name=c("Laptop", "Milk", "Bread", "Couch"),
price=c(699.99, 2.49, 3.49, 299.99)
)
dbWriteTable(con, "products", products, append=T, row.names=F)
# Positional Arguments
sql = "INSERT INTO products (product_no, name, price) VALUES ($1, $2, $3);"
dbExecute(con, sql, params=list(5, "Eggs", 1.99))
# Named Arguments
sql = "INSERT INTO products (product_no, name, price) VALUES ($product_no, '$name', $price);"
dbExecute(new_con, sql, params=list(product_no=6, name="TV", price=300))
dbDisconnect(con)
Я пробовал несколько вариантов параметризованного оператора SQL, включая
sql = "INSERT INTO products (product_no, name, price) VALUES ($product_no, '$name', $price);"
и
sql = "INSERT INTO products (product_no, name, price) VALUES (:product_no, ':name', :price);"
, но безрезультатно.Есть ли способ сделать это в RPostgreSQL
или мне нужно использовать RPostgres
?