尝试使用R

时间:2017-11-27 12:16:14

标签: r rcurl

我正在尝试在工作场所实施R,并从我们所做的所有数据中节省一些时间。

我们收到的很多文件都是通过SFTP发送给我们的,因为它们包含敏感信息。

我看了看StackOverflow&谷歌,但似乎没有什么对我有用。我尝试使用我在网上找到的示例中的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:

任何帮助都将非常感激,因为这将节省我们的时间!

谢谢,

3 个答案:

答案 0 :(得分:1)

在这里看起来类似的情况:Using R to download SAS file from ftp-server

我在r中没有专家,但在给出的示例中看起来像getBinaryUrl()而不是getURL()。

希望有所帮助 中号

答案 1 :(得分:1)

使用getURI()getURL()函数时,在指定端口选项时也遇到问题。

要指定端口,只需将端口添加为port = ####而不是port(####)。例如:

data <- getURI(url = url,
               userpwd = userpwd,
               port = 22)

现在,就像@MarkThomas指出的那样,每当遇到加密错误时,请尝试使用getBinaryURL()而不是getURI()。在大多数情况下,这将允许您下载SAS.csv格式的UTF-8文件以及LATIN1文件!

答案 2 :(得分:0)

请注意,有两个包RCurlrcurl。对于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())

为此,您需要创建两个密钥文件,例如:通过腻子或类似的。

相关问题