sql >> Database >  >> RDS >> PostgreSQL

schrijf tabel in database met dplyr

Hoewel ik het van harte eens ben met de suggestie om SQL te leren, kun je profiteren van het feit dat dplyr haalt geen gegevens op totdat het absoluut moet en bouwt de query op met behulp van dplyr , voeg de TO TABLE . toe clausule, en voer vervolgens de SQL-instructie uit met behulp van dplyr::do() , zoals in:

# 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"))

Je zou zelfs een kleine functie kunnen schrijven die dit doet:

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

en pijp de query als volgt in die functie:

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. Mysql-opslagengine voor logtabel

  2. Maak een tabel in MySQL

  3. NULL-waarden opnemen in een query met Outer Join en Group By

  4. Hoeveel manieren om gegevens te importeren in mysql