微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用dplyr在数据库中写表

有没有办法让dplyr将数据库管道数据连接到该数据库中的新表,从不在本地下载数据?

我想做一些事情:

tbl(con,"mytable") %>%
   group_by(dt) %>%
   tally() %>%
   write_to(name = "mytable_2",schema = "transformed")

解决方法

虽然我完全同意学习sql的建议,但您可以利用dplyr不会提取数据直到它必须使用dplyr构建查询,添加TO TABLE子句,然后运行sql语句这一事实.使用dplyr :: do(),如:
# CREATE A DATABASE WITH A 'FLIGHTS' TABLE
library(Rsqlite)
library(dplyr)
library(nycflights13)
my_db <- src_sqlite("~/my_db.sqlite3",create = T)
flights_sqlite <- copy_to(my_db,flights,temporary = FALSE,indexes = list(
  c("year","month","day"),"carrier","tailnum"))

# BUILD A QUERY
QUERY = filter(flights_sqlite,year == 2013,month == 1,day == 1) %>%
    select( year,month,day,carrier,dep_delay,air_time,distance) %>%
    mutate( speed = distance / air_time * 60) %>%
    arrange( year,carrier)

# ADD THE "TO TABLE" CLAUSE AND EXECUTE THE QUERY 
do(paste(unclass(QUERY$query$sql),"TO TABLE foo"))

你甚至可以写一点功能来做到这一点:

to_table  <- function(qry,tbl)
    dplyr::do(paste(unclass(qry$query$sql),"TO TABLE",tbl))

并将查询传递给该函数,如下所示:

filter(flights_sqlite,carrier) %>%
    to_table('foo')

原文地址:https://www.jb51.cc/mssql/78228.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐