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

使用RPostgres批量查询重复返回首100万条数据的解决方法

解决RPostgres批量导出数据重复写入的问题

你的代码里有两个关键错误导致重复写入首100万条记录:

  1. 写入变量名错误:你用write.csv(data, ...),但实际每次获取的新数据存在chunk变量里,这里应该写chunk而非data。如果data是环境里的旧变量,就会每次重复写入旧数据。
  2. 路径与文件名问题:Windows路径的反斜杠\需要转义成\\,或者直接用正斜杠/;另外文件名没加.csv后缀,生成的文件不是标准CSV格式。

修改后的完整代码:

wrds <- dbConnect(Postgres(),
                  host='wrds-pgdata.wharton.upenn.edu',
                  port=9737,
                  dbname='wrds',
                  sslmode='require',
                  user='username')

res <- dbSendQuery(wrds, "SELECT VARNAMES FROM DATABASE WHERE CONDITIONS")
i = 0

while (!dbHasCompleted(res)) {
  i <- i+1
  chunk <- dbFetch(res, 1000000) # 每次获取100万条新数据
  # 修正路径分隔符,添加.csv后缀
  filename <- paste0("path/EuropeanSMEs_", i, ".csv")
  # 写入当前获取的chunk数据
  write.csv(chunk, filename, row.names = FALSE)
}

dbClearResult(res)
dbDisconnect(wrds)

关键修改说明:

  • 把write.csv(data, ...)改成write.csv(chunk, ...),确保每次写入的是刚获取的新批次数据。
  • 用paste0代替paste,避免文件名出现多余空格;同时添加.csv后缀,保证文件是可识别的CSV格式。
  • 将路径中的\替换为/(或者转义为\\),避免R解析路径时出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:05:27