sql >> Databasteknik >  >> RDS >> PostgreSQL

skriv tabell i databas med dplyr

Även om jag helhjärtat håller med om förslaget att lära mig SQL, kan du dra fördel av det faktum att dplyr drar inte data förrän det absolut måste och bygger frågan med dplyr , lägg till TO TABLE och kör sedan SQL-satsen med dplyr::do() , som i:

# 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, month, day, carrier)

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

Du kan till och med skriva en liten funktion som gör detta:

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

och skicka frågan till den funktionen så här:

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, month, day, carrier) %>%
    to_table('foo')



  1. vad är meddelandet:resurs-id #9?

  2. Serverversioner som stöds för Oracle 12c-klienten

  3. Hur ställer jag in en kollation med mysqli?

  4. MySQL-variabler som lagrar databasnamn