尝试使用 R 从 SFTP 下载文件
Attempting to download files from SFTP using R
我正尝试在工作场所实施 R 并从我们处理的所有数据中节省一点时间。
我们收到的许多文件都是通过 SFTP 发送给我们的,因为它们包含敏感信息。
我查看了 Whosebug 和 Google,但似乎对我没有任何帮助。我尝试使用我在网上找到的示例中的 RCurl 库,但它不允许我将端口 (22) 作为登录详细信息的一部分包含在内。
library(RCurl)
protocol <- "sftp"
server <- "hostname"
userpwd <- "user:password"
tsfrFilename <- "Reports/Excelfile.xlsx"
ouptFilename <- "~/Test.xlsx"
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, userpwd=userpwd)
我最终收到了错误代码
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
我们将不胜感激任何帮助,因为这将为我们节省大量时间!
谢谢,
山
请注意,有两个包,RCurl
和 rcurl
。对于 RCurl
,我成功地使用密钥文件通过 sftp 连接:
opts <- list(
ssh.public.keyfile = pubkey, # file name
ssh.private.keyfile = privatekey, # filename
keypasswd <- keypasswd # optional password
)
RCurl::getURL(url=uri, .opts = opts, curl = RCurl::getCurlHandle())
为此,您需要创建两个密钥文件,例如通过油灰或类似物。
这里的情况类似:Using R to download SAS file from ftp-server
我不是 r 方面的专家,但在给定的示例中,getBinaryUrl() 似乎有效,而不是 getURL()。
希望对您有所帮助
M
我在使用 getURI()
和 getURL()
函数时也遇到了指定端口选项的问题。
为了指定端口,您只需将端口添加为 port = ####
而不是 port(####)
。例如:
data <- getURI(url = url,
userpwd = userpwd,
port = 22)
现在,就像@MarkThomas 指出的那样,无论何时遇到编码错误,请尝试 getBinaryURL()
而不是 getURI()
。在大多数情况下,这将允许您下载 SAS
个文件以及 UTF-8
或 LATIN1
!!
中的 .csv
个文件
我正尝试在工作场所实施 R 并从我们处理的所有数据中节省一点时间。
我们收到的许多文件都是通过 SFTP 发送给我们的,因为它们包含敏感信息。
我查看了 Whosebug 和 Google,但似乎对我没有任何帮助。我尝试使用我在网上找到的示例中的 RCurl 库,但它不允许我将端口 (22) 作为登录详细信息的一部分包含在内。
library(RCurl)
protocol <- "sftp"
server <- "hostname"
userpwd <- "user:password"
tsfrFilename <- "Reports/Excelfile.xlsx"
ouptFilename <- "~/Test.xlsx"
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, userpwd=userpwd)
我最终收到了错误代码
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
我们将不胜感激任何帮助,因为这将为我们节省大量时间!
谢谢,
山
请注意,有两个包,RCurl
和 rcurl
。对于 RCurl
,我成功地使用密钥文件通过 sftp 连接:
opts <- list(
ssh.public.keyfile = pubkey, # file name
ssh.private.keyfile = privatekey, # filename
keypasswd <- keypasswd # optional password
)
RCurl::getURL(url=uri, .opts = opts, curl = RCurl::getCurlHandle())
为此,您需要创建两个密钥文件,例如通过油灰或类似物。
这里的情况类似:Using R to download SAS file from ftp-server
我不是 r 方面的专家,但在给定的示例中,getBinaryUrl() 似乎有效,而不是 getURL()。
希望对您有所帮助 M
我在使用 getURI()
和 getURL()
函数时也遇到了指定端口选项的问题。
为了指定端口,您只需将端口添加为 port = ####
而不是 port(####)
。例如:
data <- getURI(url = url,
userpwd = userpwd,
port = 22)
现在,就像@MarkThomas 指出的那样,无论何时遇到编码错误,请尝试 getBinaryURL()
而不是 getURI()
。在大多数情况下,这将允许您下载 SAS
个文件以及 UTF-8
或 LATIN1
!!
.csv
个文件