【发布时间】:2018-10-30 21:37:59
【问题描述】:
我有一个 PostgreSQL 服务器托管在我们内部网上的虚拟机上。在网络的其他地方(这些机器无法访问相同的文件系统)我有大约 850 个 R 脚本正在运行(同时),每个脚本生成 500k 到 300 万行数据,我想推送到一个(当前为空)数据库中的表。我正在尝试确定这样做的最佳方法是什么。到目前为止,我想出了这些解决方案:
使用 R odbc 和 DBI::dbWriteTable 包/函数将数据推送到远程服务器。作为测试,我尝试同时采用这条路线进行 3 批(共约 850 批),耗时约 25 分钟。
将数据导出为文本文件,使用SSH将文本文件复制到托管数据库的服务器,并使用
COPY导入数据
有没有更好的方法来做到这一点?最好的方法是什么?
我试图推送到的表已编入索引并具有外键以及唯一约束。我在某处读过,在添加数据之前删除这些,然后再将它们添加回来可以显着加快速度。这会产生重大影响吗?
【问题讨论】:
标签: postgresql rodbc r-dbi