有没有办法使用RMySQL
包创建临时表?如果是这样,那么正确的方法是什么?特别是我正在尝试将 R 会话中的数据帧写入临时表。我有几个并行运行的进程,我不想担心名称冲突,这就是为什么我想让它们成为临时的,所以它们只对每个单独的会话可见。解决方案应该以某种方式涉及dbWritetable
而不是dbSendQuery("create temporary table tbl;")
。
注意:我在网上发现了一些建议使用dbSendQuery(con, "create temporary table x (x int)")
手动创建临时表,然后简单地用dbWriteTable()
覆盖它的内容。这不起作用。
答案 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发送拉取请求。