使用 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 时速度非常快。
我们设法在 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 时速度非常快。