You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SFTP获取的Zip二进制对象转为可读格式并接入R Studio Connect

处理SFTP拉取的Zip二进制对象并转为可读格式(最终存入R Studio Connect)

你已经成功通过SFTP拿到了Zip文件的二进制raw对象,确实缺少将二进制Zip解压为可读CSV数据的关键步骤,全程可以在内存中完成,无需写入本地文件,下面是完整的实现流程:

第一步:从二进制Zip对象读取CSV数据

利用R的内存连接功能直接解析二进制数据:

# 把二进制raw对象转为内存连接
zip_conn <- rawConnection(test)

# (可选)查看Zip包内的文件列表,确认目标CSV文件名
zip_contents <- utils::unzip(zip_conn, list = TRUE)
print(zip_contents$Name) # 输出类似 "filename.csv"

# 读取Zip内的CSV文件为数据框(人类可读格式)
csv_data <- utils::read.csv(
  unz(zip_conn, filename = zip_contents$Name[1]),
  stringsAsFactors = FALSE
)

# 关闭内存连接
close(zip_conn)

关键说明:

  • rawConnection(test):将你获取的二进制raw向量转为R可读取的连接对象,全程在内存操作,避免本地文件IO
  • 若明确知道Zip内的CSV文件名,可跳过查看列表的步骤,直接写死文件名(比如"filename.csv")
  • 处理大文件时,推荐用readr::read_csv替代utils::read.csv,速度更快且支持更多编码格式

第二步:将数据存入R Studio Connect的Pin

使用pins包完成数据上传,确保已配置好R Studio Connect的连接权限:

library(pins)

# 连接到R Studio Connect(自动读取本地rsconnect配置,无需手动输入密钥)
board <- board_rsconnect()

# 将数据框作为Pin存入
pin_write(
  board = board,
  x = csv_data,
  name = "sftp_auto_pulled_data",
  type = "rds",
  description = "通过SFTP自动化拉取并解压的CSV数据"
)

额外提示:

  • 如果Zip包内包含多个文件,可通过循环zip_contents$Name逐个读取处理
  • 若未配置过R Studio Connect,先用rsconnect::connectUser()完成账号绑定,后续board_rsconnect()会自动读取配置

内容的提问来源于stack exchange,提问作者QMan5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:45:41