Getting data from dataframe to MS-access DB Target Tables using R

shr*_*hri 5 ms-access 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.

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

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

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

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'")
Run Code Online (Sandbox Code Playgroud)

Par*_*ait 5

请查看RODBC手册。有多种方法可以将数据框附加到 Access 表。当然,请确保数据框列按名称和数据类型与表列对齐。

sqlUpdate (写入或更新 ODBC 数据库中的表)

sqlSave(con, pub, AccessTablename, append = FALSE, rownames = FALSE)

sqlUpdate(con, pub, Accesstablename)
Run Code Online (Sandbox Code Playgroud)

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))
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用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
Run Code Online (Sandbox Code Playgroud)