使用 R 从数据帧获取数据到 MS-access DB 目标表 [英] Getting data from dataframe to MS-access DB Target Tables using R

查看:38
本文介绍了使用 R 从数据帧获取数据到 MS-access DB 目标表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 R 中创建了数据帧.我使用以下代码连接到访问数据库.我能够将所有数据从访问数据库中提取到 R.

I have created Data frames in R. I have connected to access DB using below code. I am able to extract all data from access db to R.

我在 Access 中有 3 个表,例如 A 、 B 、 C

I have 3 tables in Access like A , B , C

在 R 中创建相同的数据框,如 A、B、C

Created same data frames in R like A, B, C

如何将 A、B、C 的 R 数据框从 R 移动到 Access DB 目标表 A、B、C?

How to move the R data frames of A, B, C from R to Access DB Target Tables A,B,C?

在 R studio 中使用 R 编码.?

Using R coding in R studio.?

请帮忙解决这个问题,这对我来说很重要.

Please help on this, this is important task for me.

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 表.当然,请确保数据框列按名称和数据类型与表列对齐.

Please take a look at the RODBC manual. There are multiple ways to append data frames to Access tables. Of course be sure data frame columns align to table columns by name and data type.

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 应用程序对象将数据帧导出到 csv(使用 DoCmd 属性)并运行 DoCmd.TransferText 方法.


You can even mirror VBA using RDCOMClient and export data frames to csv by opening an Access application object (with DoCmd property) and run the DoCmd.TransferText method.

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 从数据帧获取数据到 MS-access DB 目标表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆