gpt4 book ai didi

mysql - R 到 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 15:38:55 25 4
gpt4 key购买 nike

我在 R 中得到一个数据框来查询 SQL Server 数据库,现在我想循环每一行并将其插入到 MySQL 数据库

尝试使用 dbwritetable 但没有成功

library(RODBC)
library(odbc)
library(RMySQL)

con <- dbConnect(odbc(),
Driver = "SQL Server",
Server = "XX",
Database = "XX",
UID = "XX",
PWD = "XX",
Port = XX)


mydb = dbConnect(MySQL(), user='XX', password='XX', dbname='YY', host='YYY')


resultset <- dbGetQuery(con, "SET NOCOUNT ON
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = dateadd(d,-1,getdate())
SET @EndDate = getdate()
SET NOCOUNT OFF
SELECT …..
LEFT JOIN ... ON ….
LEFT JOIN …. ON x.Key = y.Key
WHERE temp.StartDateTime >= @StartDate")

nrows <- nrow(resultset)
colnames(resultset) <- c("tagName", "date_inserted","value") `

所以在这里我在结果集中得到了结果,但我不知道如何将结果集插入MySQL

    dbWriteTable(mydb, name='data', value=resultset[0,],append=TRUE)

dbReadTable(mydb, "数据")

我希望插入数据,但我不知道它应该是一个 for 循环(每行一个查询)还是如何完成

此图像的更多详细信息:

This is my data set

This is MySQL DB structure

最佳答案

尝试使用RODBCext 包来使用参数化插入。我过去曾使用过以下功能。

这会将记录追加到您的数据库中

library(RODBC)
library(RODBCext)

首先我们需要使用RODBC连接到数据库。

sql.driver  = "MySQL ODBC 5.3 ANSI Driver" # need to figure the version out
sql.server = "your_server_here"
sql.port = "3306" # or whatever your port number is
sql.user = "your_user_name_here"
sql.pass = "your_password_name_here"
sql.db = "your_database_name_here"

con.string = paste0("Driver=", sql.driver, ";",
"Server=", sql.server, ";",
"Port=", sql.port, ";",
"Uid=", sql.user, ";",
"Pwd=", sql.pass, ";",
"Database=", sql.db, ";")

ch = odbcDriverConnect(con.string)

然后这是自定义函数saveTable()。您将需要使用下面定义的特定输入来运行此程序。

saveTable <- function(con, table_name, df) {
# con = the ODBC connection (e.g., ch)
# table_name = the SQL database table to append to
# df = the data.frame() to append

sql_code = paste("INSERT INTO",table_name,"(",paste(colnames(df),collapse=", "),") VALUES (",paste(rep("?",ncol(df)),collapse=","),")")

sqlExecute(con, sql_code, df)
}

关于mysql - R 到 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57889906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com