使用R包googledrive加载谷歌云端大XLSX文件时遇错误求助
解决大XLSX文件无法用googlesheets访问及googledrive报错问题
嘿,我来帮你搞定这个棘手的问题!你遇到的 'file' does not identify at least one Drive file 报错,基本是因为调用googledrive时文件定位出错了,再加上大文件没法自动转Google Sheet,咱们一步步来解决:
第一步:先搞定googledrive的报错——找对文件的唯一ID
这个报错大概率是你用文件名或者路径定位文件时出了问题(比如重名、路径层级不对),最靠谱的方式是用文件的唯一ID:
- 打开谷歌云端硬盘,找到那个大XLSX文件,右键选「获取链接」
- 链接里像这样:
https://drive.google.com/file/d/XXXXXX/view?usp=sharing,把中间的XXXXXX(也就是文件ID)复制下来
第二步:用googledrive下载文件到本地,再用R读取
既然没法转成Google Sheet,那咱们直接把文件下载到本地,用readxl来读取就行,代码如下:
# 先加载需要的包 library(googledrive) library(readxl) # 登录谷歌账号(第一次运行会跳浏览器授权,按提示来就行) drive_auth() # 用复制的文件ID定位目标文件 target_file <- drive_get(id = "这里替换成你的文件ID") # 把文件下载到本地工作目录,overwrite=TRUE会覆盖同名文件 drive_download(target_file, path = "local_copy.xlsx", overwrite = TRUE) # 读取本地的XLSX文件 my_data <- read_excel("local_copy.xlsx")
为什么没法自动转Google Sheet?
谷歌云端硬盘对自动转换的文件有大小限制(不同账户类型上限不一样),超过这个阈值就不会转成Google Sheet,而且没法预览只能下载。这种情况下本地读取是最直接的方案,readxl处理大XLSX的能力很稳,只要你本地内存够就行。
要是本地内存不够怎么办?
如果文件大到本地内存扛不住,试试分块读取,每次只读一部分数据:
# 分块读取指定工作表,chunk_size设成你内存能承受的行数 chunked_data <- read_excel("local_copy.xlsx", sheet = "Sheet1", chunk_size = 10000)
这样每次读10000行,不会一下子占满内存。
内容的提问来源于stack exchange,提问作者Iniciador
相关产品推荐
相关产品推荐

