我正在尝试创建一个可以像可执行文件一样运行的 RScript 文件。我有连接到 Microsoft Azure SQL Server 数据库的 R 代码,该数据库使用活动目录密码身份验证、查询数据库并编写 csv 报告。我为数据库创建了一个 DSN,并使用以下代码在 RStudio.exe 和 RGui.exe 的 32 位和 64 位环境中成功连接到数据库:
library(DBI)
library(tidyverse)
library(profvis)
show("Library Installed...")
pause(2)
CON <- dbConnect(odbc::odbc(), "My_DSN", uid = "UserName", pwd = "Password", timeout = 10)
show("Database Connected...")
pause(2)
SQL <- "SELECT * FROM Table"
DATA <- dbGetQuery(CON, SQL)
show("Data Extracted...")
pause(2)
NAME = unique(DATA$Name)
DATA.INDIVIDUAL = list()
for (i in NAME){
DATA.INDIVIDUAL[[i]] <- DATA %>% filter(Name == i) %>% select("Field1", "Field2", "Field3")
write.csv(DATA.INDIVIDUAL[[i]], paste("C:/My Documents/", i, "/Report.csv", sep = ""), row.names = FALSE)
show(paste("Exported",i))
pause(2)
}
我还通过显式命名数据库来连接
library(DBI)
con <- dbConnect(odbc::odbc(), uid = "UserName", pwd = "Password", Driver = "ODBC Driver 17 for SQL Server", Server = "ServerName", Database = "DBName", Authentication = "ActiveDirectoryPassword")
show("Database Connected...")
但是,当我使用 RScript.exe 运行相同的代码(两个版本)时,NULL
会打印到 RScript 命令行(在打印输出“Database Connected...”之前)并且应用程序退出而不完成我的其余代码. 为什么 Rstudio 和 RGui 可以连接,但 RScript 无法连接?为什么没有错误,只是NULL
打印出来了?
感谢任何帮助!