从dplyr对象创建新的SQL表而不使用R内存

kis*_*msu 4 sql memory r dplyr

我正在使用dplyr对PostgreSQL中的大表进行操作.经过多次操作后,我有一个大的派生表,我想保存到一个新表.原始解决方案是将其加载到R存储器并写入数据库.这听起来很可怕,因为新表只是一个由dplyr生成的CREATE + SQL.有什么方法可以使用内置函数将CREATE或UPDATE应用于数据库dplyr对象?

D. *_*ods 5

希望通过将哈德利的有用评论转化为答案来获得一些积分.此外,我认为可能有一些变化也允许copy_to这样做(至少它似乎对我有用).

data(iris)
remoteDb <- src_postgres(dbname="irisDb",host="remoteDB.somewhere.com",
                          port=5432,user="yourUser",password="yourPass")

irisSql <- copy_to(remoteDb,iris,"iris_table",temporary=FALSE)

irsSqlPermanent <- compute(irisSql, name="iris_table_permanent", temporary=FALSE) 
Run Code Online (Sandbox Code Playgroud)

前两行抓住R标准数据集"iris"并建立连接(在本例中为Postgres).

copy_to行利用了似乎是一个未记录的参数temporary,该参数允许数据框在数据库中持久存在(在bug报告中找到一个).该compute行还按预期工作,但我不知道,如果你使用它是需要temporary=FALSEcopy_to.