如何使用R将数据推送至Couchdrop SFTP服务?
R语言向Couchdrop SFTP上传数据解决方案
报错原因说明
Error in file(what, "rb") : invalid 'description' argument报错的核心原因是:RCurl::ftpUpload的what参数要求传入本地磁盘文件的路径字符串,你直接传入了内存中的数据框对象test_df,函数无法直接读取内存对象作为上传源,需要先将数据导出为本地文件再执行上传。
完整可运行代码
# 加载依赖包 library(RCurl) # 1. 将内存数据框导出为本地临时文件(也可替换为你自定义的固定路径) local_temp_file <- tempfile(fileext = ".csv") write.csv(test_df, local_temp_file, row.names = F) # 2. 拼接Couchdrop目标路径(to参数格式) # 格式规则:sftp://[用户名]:[密码]@sftp.couchdrop.io/[目标路径/文件名] user <- "testadmin" pwd <- "adminpwd" # 自定义保存在Couchdrop上的文件名,含子目录可直接拼接路径 couchdrop_save_path <- "business_data/202407_test_df.csv" target_url <- paste0("sftp://", user, ":", URLencode(pwd), "@sftp.couchdrop.io/", couchdrop_save_path) # 3. 执行上传 ftpUpload( what = local_temp_file, to = target_url, .opts = list(ftp.use.epsv = FALSE, ssl.verifypeer = FALSE) # 可选,兼容部分网络环境的连接问题 ) # 可选:上传完成后删除本地临时文件 unlink(local_temp_file)
补充注意事项
- 若密码包含
@/://等特殊字符,必须使用URLencode()处理密码字符串,避免路径解析错误 - 要上传到Couchdrop的指定子目录,直接在
sftp.couchdrop.io/后拼接对应目录路径即可,无需提前手动创建目录(Couchdrop支持自动生成) - 如果需要定期执行上传逻辑,把上述代码封装为函数,配合
cronR(Linux)或taskscheduleR(Windows)设置定时任务即可
内容的提问来源于stack exchange,提问作者Rijul
相关产品推荐
相关产品推荐

