dbConnect在Rstudio.exe和RGui.exe中工作,但在RScript.exe中作为可执行文件失败
我正在尝试创建一个RScript文件,它可以像可执行文件一样运行。我有一个R代码,它连接到Microsoft Azure SQL Server数据库,该数据库使用active directory密码验证,查询数据库,并编写csv报告。我为数据库创建了DSN,并使用以下代码在RStudio.exe和RGui.exe的32位和64位环境中成功连接到数据库:dbConnect在Rstudio.exe和RGui.exe中工作,但在RScript.exe中作为可执行文件失败,r,odbc,dbi,rscript,dbconnect,R,Odbc,Dbi,Rscript,Dbconnect,我正在尝试创建一个RScript文件,它可以像可执行文件一样运行。我有一个R代码,它连接到Microsoft Azure SQL Server数据库,该数据库使用active directory密码验证,查询数据库,并编写csv报告。我为数据库创建了DSN,并使用以下代码在RStudio.exe和RGui.exe的32位和64位环境中成功连接到数据库: library(DBI) library(tidyverse) library(profvis) show("Library Ins
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)
}
库(DBI)
图书馆(tidyverse)
图书馆(profvis)
显示(“已安装库…”)
暂停(2)
CON Hmmm…由于您将连接对象分配给dbConnect
,Rscript不应输出任何内容。请将发送到Rscript的确切行过帐。它不可能是您发布的内容,因为没有库
命令,但是库
(R区分大小写)。@Parfait我用完整的代码更新了我的帖子,因此使用该代码,NULL
出现在显示(“数据库连接…”)之前。
?是否显示(“已安装库…”)
是否显示?当CON@Parfaitshow(“已安装库…”)时,
出现,然后NULL
出现,show(“已连接数据库…”)
不出现,然后窗口关闭。如果我删除所有show
和pause
行,则RScript窗口打开,我可以看到库加载,然后窗口关闭。我添加了show
和pause
以降低执行速度,这样我就可以看到发生了什么。Rscript不是一个单击运行的应用程序,而是一个自动命令行工具。您可以打开PowerShell或CMD(Unix计算机中的Bash)并调用Rscript'C:\path\to\myscript.R'
,或者如果R bin文件夹不在path env变量中:C:\path\to\R\bin\Rscript'C:\path\to\myscript.R'
。看见
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...")