Réponse courte: oui.
Réponse énervante: voir le package RODBC, et en particulier les fonctions odbcConnectAccess et sqlSave.
Exemple: renseignement d'une base pré-existante (y compris structure des tables) nommée ici Laser. Dans cet exemple, les tables sont vidées (fonction sqlClear) avant d'être renseignées:
Code : Tout sélectionner
BeefToLaser <- function(tab, laser){
on.exit(odbcCloseAll())
listobj <- objects(name = 1)
n <- match(tab, table = listobj)
if(is.na(n))
stop("Le tableau ", tab, " n'existe pas dans l'espace de travail courant.\n")
nam <- listobj[n]
dat <- get(nam)
NAM <- ifelse(substring(nam, 3, 7) == "Param", nam, toupper(nam))
canal <- odbcConnectAccess(laser)
sqlClear(channel = canal, sqtable = NAM)
sqlSave(channel = canal, dat = dat, fast = FALSE, safer = FALSE, tablename = NAM, rownames = FALSE, colnames = FALSE)
cat("La table", NAM, "a été renseignée dans la base", laser, "\n")
odbcCloseAll()
invisible(NULL)
}
Utilisation:
Code : Tout sélectionner
# nom de la base Laser à renseigner
Laser <- "D:/Laser/base/Laser.mdb"
# nom des tables à exporter vers Laser
Tables <- c("T_Param_Region", "T_Param_Unite", "T_Param_SubUnite", "T_Param_Gene",
"T_Param_Test_Diag", "T_Param_Type_Prelev",
"T_lieu", "T_mouvment", "T_concess", "T_boucle", "T_concani", "T_animal", "T_labo")
# exportation
for(i in seq(length(Tables)))
BeefToLaser(tab = Tables[i], laser = Laser)
On peut aussi créer les tables à la demande, mais à ma connaissance, on ne peut pas créer de nouvelle base Access depuis R.
Bon courage,
Renaud