mysql - 将数据框中的一行数据直接插入到 R 中的数据库中

标签 mysql r rodbc

我能够在 R 中按值向数据库中插入一行,如下所示

#connect
conn = odbcDriverConnect("Driver=SQL Server; Server=MyServerName; Database=MyDBName; Uid=IAMTubby; Pwd=abcd;")

#insert
myquery = "insert into MyTableName values('1234','M','6','3');"
res = sqlQuery(conn, myquery)

但是,我想将我的数据框的第一行直接插入到 sql 中,而不是将它们分成值。我怎样才能做到这一点? 比如说,我的数据框如下所示,并且与数据库具有相同的模式

> df[1,]
  col1 col2 col3 col4
1 1234    M    6    3

编辑:我尝试了 sqlSave,但是当我执行以下代码时我的 RStudio 崩溃了。我哪里错了?

SQL-Server 中的表创建代码

#table creation
use DBName

CREATE TABLE Persons
(
col1 varchar(255),
col2 varchar(255),
col3 varchar(255),
);

R胶水代码

#library
library("RODBC")

#connect
conn = odbcDriverConnect("Driver=SQL Server; Server=MyServer; Database=DBName; Uid=username; Pwd=abcd;")

#inserting a data frame
df = NULL
df$col1 = '1'
df$col2 = '2'
df$col3 = '3'
df = as.data.frame(df)
sqlSave(conn, df[1,], tablename = "Persons", append = TRUE)

最佳答案

选项 1:您可以像这样动态创建查询:

df = data.frame(col1 = 1234, col2 = "M", col3 = 6, col4 = 3) 
myquery = paste0("insert into MyTableName values(", paste0("'", df[1,], "'", collapse = ", "), ");")

这会将以下字符串保存在对象 myquery 中:

 "insert into MyTableName values('1234', '1', '6', '3');"

选项 2:

正如@nrussell 评论的那样,您还应该能够在 RODBC 包中使用 sqlSave 函数:

sqlSave(conn, df[1,], tablename = "MyTableName", append = TRUE)

关于mysql - 将数据框中的一行数据直接插入到 R 中的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783070/

相关文章:

r - 如何在运行 r 脚本时忽略错误

带有 MAC 的 RODBC 不起作用。使用 unixODBC 和 Rstudio

r - 如何将数据帧插入SQL Server表中?

php - Mysql 分隔符在 mysql 中有效,但在 PHP 中无效

mysql - mysql存储过程的正确写法

php - 使用 .txt 文件作为元标记数据库安全吗?

r - 检查两个字符串是否是字谜

r - Shiny 的 ggplot 绘图画笔限制,x 轴作为日期

r - 使用 RODBC 连接 R 和 Vertica

php - 在 ./libraries/dbi/DBIMysqli.class.php#522 中注意