使用 MonetDB.R 和带有 csvdump=TRUE 的 dbWriteTable 问题(错误?)

Issue (bug?) with MonetDB.R and dbWriteTable with csvdump=TRUE

我们设法在 30 秒左右(在 MacBook Pro 上)使用 R 和 MonetDB.R 在闪亮的应用程序中写入 170 万行:

dbWriteTable(conn, tableName, Dt,overwrite=TRUE, csvdump=TRUE)

据我们了解,MonetDB.R 代码首先将 table 以 csv 格式保存在 /tmp 文件夹中,然后使用 COPY INTO

我们刚刚在 centos 服务器和 RStudio 服务器上进行了尝试,我们在 /tmp 中的临时文件夹上遇到了访问权限错误。

我们用经典解决了这个问题

chmod -R 777 /tmp

但如果我们 运行 闪亮的应用程序的这一部分似乎我们必须再做一次,因此它看起来不是一个可扩展的解决方案。

是否有可能获得更简单table和可扩展的解决方案?

(此外,此功能已记录在 MonetDB 0.94 中,但它没有出现在 CRAN 上的 0.95 文档中的任何位置 - 我们可以安全地假设这是一个错字并且该功能将保留吗?)

MonetDB.R 使用 R 的 tempfile() 创建临时 CSV 文件。 tempfile 依次调用 tempdir 以获取临时目录。可以通过环境变量TMPDIR等控制该目录的位置。有关详细信息,请参阅 ?tempdir

例如

$ TMPDIR=/tmp/foo R -e "print(tempfile())"
[1] "/tmp/bar/Rtmp7UKG0k/file1173e13a4477c"

$ TMPDIR=/tmp/bar R -e "print(tempfile())"
[1] "/tmp/foo/RtmpPxx76t/file1174a409c06a2"

关于您的其他问题,csvdump 功能将保留,因为 MonetDB 在批量加载 CSV 时速度非常快。