Автоматизировать R-скрипт, который использует ODBC, используя пакет Windows - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь автоматизировать этот код R с помощью пакета Windows, он называется mail.R, выполняет запрос в базе данных и отправляет почту с возвращенной информацией:

library(data.table)
library(htmlTable)
library(mailR)
library(DBI)
query <- "SELECT COUNT(*) FROM OPRLIBRANL.SAIALICTB"
odbccon <- dbConnect(odbc::odbc(), "NACIONAL")
records  <- data.table(dbGetQuery(odbccon,query))
records <- as.integer(records$`00001`[1])
dbDisconnect(odbccon)
Table1 <- data.frame(
  Archive= c("SAIALICTB"),
  Records = c(records))
Table1 <- htmlTable(Table1, rnames = FALSE)
from1 <- "someone@xyz.com"
to1 <- c("someoneelse@xyz.com")
subject1 <- "Records in table"
body1 <- paste0("<html><head>
                 <style>
                 body{font-family:Calibri, sans-serif;}
                 table{border-left:1px solid #000000;border-top:1px solid #000000;}
                 table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:13px; font-weight:bold; margin: 0px; padding-left: 5px; padding-right: 5px; margin: 0px;}
                 table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:13px; font-weight:normal; margin: 0px; padding-left: 5px; padding-right: 5px; margin: 0px;}
                 </style>
                 </head><body><p>The number of records in table SAIALICTB are:</p>",
                 Table1,
                 "</body></html>")
send.mail(from=from1,to=to1,subject=subject1,body=body1,smtp=list(host.name="some SMTP server",port=25),authenticate = FALSE,html=TRUE, send = TRUE)

Работает нормально, когда я выполняюэто вручную в RStudio, но при использовании batch ничего не делает.Я использую эту команду для вызова кода R:

"C:\Program Files\R\R-3.5.2\bin\R.exe" CMD BATCH "C:\"...path to file..."\mail.R"

Я попытался использовать Rscript.exe вместо R.exe , также изменив dbConnect для odbcConnect в пакете RODBC и ничего не решает проблему.

Что-то не так с созданием ODBC, когда код R вызывается из CMD?

Или, я что-то не так делаю?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 января 2019

Попробуйте taskscheduleR, если вы работаете в Windows.

install.packages('taskscheduleR')
library(taskscheduleR)

После установки пакета перейдите на Инструменты > Надстройки > Обзор надстроек и затем выберите taskcheduleR .После этого вы можете установить спецификации вашего скрипта.Он также дает вам журналы вашего скрипта , чтобы вы могли найти, что идет не так в вашем скрипте. Даже одна ошибка приводит к завершению работы сценариев. Файл журналов можно найти в папке C: \ ~ \ Documents \ R \ win-library \ 3.5 \ taskscheduleR \ extdata.

Надеюсь, что это такпомогает!

...