我在 R 中创建了数据帧。我使用下面的代码连接到 Access 数据库。
我能够将所有数据从 Access 数据库中提取到 R。
我在 Access 中有 3 个表,如 A 、 B 、 C
在 R 中创建相同的数据框,如 A、B、C
如何将 A、B、C 的 R 数据框从 R 移动到 Access DB 目标表 A、B、C?
在 R studio 中使用 R 编码。?
请帮忙解决这个问题,这对我来说很重要。
con <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};
DBQ=C:/Users/chintan/Desktop/Published.accdb")
# Get data
Pub <- sqlQuery(con, "select * from certifications
Where [Business Group]='EG'
AND FY='FY15'")
最佳答案
请看 RODBC手动的。有多种方法可以将数据框附加到 Access 表。当然,请确保数据框列按名称和数据类型与表列对齐。
sqlUpdate (写入或更新 ODBC 数据库中的表)
sqlSave(con, pub, AccessTablename, append = FALSE, rownames = FALSE)
sqlUpdate(con, pub, Accesstablename)
sqlQuery (向 ODBC 数据库提交 SQL 查询,并检索结果)
# APPEND QUERY
sql <- paste0("INSERT INTO AccessTableName(col1, col2, col3)
VALUES('", pub$col1 ,"','", pub$col2, "','",pub$col3, "')")
appendRecords <- lapply(sql, function(x) sqlQuery(con, x))
# UPDATE QUERY
sql <- paste0("UPDATE AccessTableName
SET col1 = '", pub$col1 ,"'
col2 = '", pub$col2 ,"'
col3 = '", pub$col3 ,"'")
appendRecords <- lapply(sql, function(x) sqlQuery(con, x))
您甚至可以使用 RDCOMClient 镜像 VBA通过打开 Access 应用程序对象(具有 DoCmd 属性)并运行 DoCmd.TransferText 将数据帧导出到 csv方法。
library(RDCOMClient)
# OUTPUT R DATA FRAME TO CSV
rdfpath = 'C:\\Path\\To\\R\\DataFrame\\Output.csv'
write.csv(pub, rdfpath, row.names=FALSE)
# LAUNCH ACCESS APP
strDbName = 'C:\\Path\\To\\Database\\File.accdb'
oApp = COMCreate("Access.Application")
oApp$OpenCurrentDatabase(strDbName)
# IMPORT CSV DATA TO TABLE
acImportDelim <- 0
importObj = oApp[["DoCmd"]]
importObj$TransferText(acImportDelim, "", "AccessTableName", rdfpath, TRUE)
importObj$CloseDatabase
importObj <- NULL
oApp <- NULL
关于r - 使用 R 从数据帧获取数据到 MS-access DB 目标表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001509/