2017-05-08 19 views
2

ftp-serverから私のローカルにいくつかのファイルをダウンロードしようとしています。私は以下の方法で.txtファイルと.csvファイルをサーバーから移動しますが、必要な.sas7bdatファイルを移動することはできませんでした。Rを使用してftp-serverからSASファイルをダウンロードする

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) 

私はのgetURLコマンドを実行すると、しかし、私は次のエラーで会っています:

Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) : 
    embedded nul in string: 

誰もが、私は、FTPサーバからsas7bdatファイルをダウンロードすることができます任意の代替方法を知っていまたは私のコードを変更してファイルを正常にダウンロードする方法があるかどうかを確認してください。ありがとう!

+1

試行' getBinaryURLを次のように、次のように結果があります。バイナリデータの方が安全です。 – MrFlick

+0

'download.file()'? – Parfait

+0

@MrFlickあなたは、その特定のステップを過ぎるために述べた機能を使用することができました。しかし、writeLines関数はエラーメッセージ "invalid 'text' argument"を返します –

答えて

0

@MrFlickが示唆しているように、getURL()の代わりにgetBinaryURLを使用してこの問題を解決しました。また、writeLines()の代わりにwrite()という関数を使用しなければなりませんでした。あるいは、

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) 

、一つのライブラリhavenを使用することができ、Rのデータフレームに読み出したデータを変換するために() `代わり

library(haven) 
df_data= read_sas(data) 
関連する問題