2

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

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

4

3 回答 3

3

根据您的mysql帐户限制,您可以不做

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

ETC..

于 2012-06-24T23:33:36.180 回答
0

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

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

默认情况下,它适用于 sqlite,但它也适用于 MySQL(我从未尝试过)。这个包是坚如磐石的并且有据可查。

于 2012-06-25T06:51:59.577 回答
0

这实际上是RMySQL 中的一个已知问题。您最好的选择可能是将数据写入临时文件,然后构建您自己的LOAD DATA LOCAL INFILE语句,RMySQL::mysqlWriteTable用作指导。

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

于 2014-03-27T17:03:07.927 回答