如何在 R 中将整个数据帧写入 mySql table

How to write entire dataframe into mySql table in R

我有一个包含列 'Quarter' 的数据框,其值类似于“16/17 Q1”、“16/17 Q2”...和 ​​'Vendor' 其值类似于 "a" , "b"....

我正在尝试使用

将此数据框写入数据库
query <- paste("INSERT INTO cc_demo (Quarter,Vendor) VALUES(dd$FY_QUARTER,dd$VENDOR.x)")

但它抛出错误:

Error in .local(conn, statement, ...) : 

无法 运行 语句:'field list'

中的未知列 'dd$FY_QUARTER'

我是 Rmysql 的新手,请给我一些解决方案来编写整个数据框?

我建议不要编写 sql 查询,因为您实际上可以使用非常方便的函数,例如 RMySQL 包中的 dbWriteTable。但为了练习,下面是一个示例,说明您应该如何编写为 MySQL 数据库执行多个插入的 sql 查询:

# Set up a data.frame
dd <- data.frame(Quarter = c("16/17 Q1", "16/17 Q2"), Vendors = c("a","b"))

# Begin the query
sql_qry <- "insert into cc_demo (Quarter,Vendor) VALUES"

# Finish it with
sql_qry <- paste0(sql_qry, paste(sprintf("('%s', '%s')", dd$Quarter, dd$Vendors), collapse = ","))

你应该得到:

"insert into cc_demo (Quarter,Vendor) VALUES('16/17 Q1', 'a'),('16/17 Q2', 'b')"

您可以将此查询提供给您的数据库连接,以便 运行 它。

希望对您有所帮助。

要将数据帧写入 mySQL 数据库,您需要:

  1. 创建到您的数据库的连接,您需要指定:

    • MySQL连接
    • 用户
    • 密码
    • 主持人
    • 数据库名称

library("RMySQL")
connection <- dbConnect(MySQL(), user = 'root', password = 'password', host = 'localhost', dbname = 'TheDB')

  1. 使用连接创建一个table然后导出数据到数据库

dbWriteTable(connection, "testTable", testTable)

您可以像这样覆盖现有的 table:

dbWriteTable(connection, "testTable", testTable_2, overwrite=TRUE)