Jus*_*evs 2 ftp r download rcurl
我正在尝试从 ftp 服务器将一些文件下载到我的本地。我已成功使用以下方法从服务器移动 .txt 和 .csv 文件,而不是我需要的 .sas7bdat 文件。
protocol <- "sftp"
server <- "ServerName"
userpwd <- "User:Pass"
tsfrFilename <- "/filepath/file.sas7bdat"
ouptFilename <- "out.sas7bdat"
# Run #
## Download Data
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, userpwd=userpwd)
## Create File
fconn <- file(ouptFilename)
writeLines(data, fconn)
close(fconn)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行 getURL 命令时,遇到以下错误:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
Run Code Online (Sandbox Code Playgroud)
有谁知道我可以从 ftp-server 将 sas7bdat 文件下载到本地的任何替代方法,或者是否有办法更改下面的代码以成功下载文件。谢谢!
小智 5
正如@MrFlick 所建议的,我使用getBinaryURL代替getURL(). 另外,我不得不使用该函数write()而不是writeLines(). 结果如下:
protocol <- "sftp"
server <- "ServerName"
userpwd <- "User:Pass"
tsfrFilename <- "/filepath/file.sas7bdat"
ouptFilename <- "out.sas7bdat"
# Run #
## Download Data
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getBinaryURL(url = url, userpwd=userpwd)
## Create File
fconn <- file(ouptFilename)
write(data, fconn)
close(fconn)
Run Code Online (Sandbox Code Playgroud)
或者,要将读取的数据转换为 R 数据帧,可以使用库haven,如下所示
library(haven)
df_data= read_sas(data)
Run Code Online (Sandbox Code Playgroud)