简短的摘要
我正在尝试使用包将 R data.frame 中的数据插入到 SQLServer 数据库上的表中DBI
。在阅读了有关 sqlAppendTable的信息后,我希望这个函数可以帮助我生成必要的 SQL 语句。但是,这个函数似乎没有在字符变量周围放置字符串,因此在尝试执行它时会产生错误。我是否正确使用它?我应该为此目的使用此功能吗?如果没有,你能推荐另一种方法吗?
我的代码
library(odbc)
library(DBI)
con <- dbConnect(
odbc::odbc(),
dsn = myDsn,
UID = myLogin,
PWD = myPwd,
Port = 1433,
encoding = "latin1"
)
insertStatement <- sqlAppendTable(
con,
"DBtable",
myDataFrame,
row.names = FALSE
)
dbExecute(
con,
insertStatement
)
dbDisconnect(con)
数据库表“DBtable”有 3 列,每列都有 type varchar
。data.frame "myDataFrame" 也有 3 列类型character
相同,名称相同,顺序相同。
问题
sqlAppendTable
生成一个不引用字符变量的 SQL 语句,即以下形式的输出:
<SQL> INSERT INTO "DBtable"
("col1", "col2", "col3")
VALUES
(Value one one, Value one two, Value one three),
(Value two one, Value two two, Value two three),
etc.
当在语句中使用此输出时dbExecute
,它会生成错误,因为值没有被引用,即,Value one one, ...
而不是'Value one one', ...
.
我的问题
- 有没有办法让这个函数在字符变量周围加上引号?如果是这样,怎么办?
- 我可以为此目的使用此功能吗?(该信息表明它“对后端实现者最有用”,无论这意味着什么。)
- 如果我不能,我可以使用其他功能吗?我宁愿避免使用
paste
(或类似的函数)创建自定义语句,因为这很乏味、容易出错,并且不容易为不同的表复制。