使用RMySQL的临时表

时间:2012-06-24 22:43:39

标签: sql r temp-tables rmysql

有没有办法使用RMySQL包创建临时表?如果是这样,那么正确的方法是什么?特别是我正在尝试将 R 会话中的数据帧写入临时表。我有几个并行运行的进程,我不想担心名称冲突,这就是为什么我想让它们成为临时的,所以它们只对每个单独的会话可见。解决方案应该以某种方式涉及dbWritetable而不是dbSendQuery("create temporary table tbl;")

注意:我在网上发现了一些建议使用dbSendQuery(con, "create temporary table x (x int)")手动创建临时表,然后简单地用dbWriteTable()覆盖它的内容。这不起作用。

3 个答案:

答案 0 :(得分:3)

根据您的mysql帐户限制,您不能

dbSendQuery(con, "create temporary table x (x int);")
dbSendQuery(con, "drop temporary table x;")

等。

答案 1 :(得分:0)

对于这种类型的工作,我会避免重新发明轮子并使用

https://code.google.com/p/sqldf/

默认情况下,它适用于sqlite,但它也适用于MySQL(我从未尝试过)。这个软件包非常坚固,并且有很好的文档记录。

答案 2 :(得分:0)

这实际上是known issue in RMySQL。您最好的选择可能是将数据写入临时文件,然后使用LOAD DATA LOCAL INFILE作为指南构建您自己的RMySQL::mysqlWriteTable语句。

对于奖励积分,如果您可以修补RMySQL :: mysqlWriteTable以使用临时文件,请向github repo发送拉取请求。