sql >> データベース >  >> RDS >> PostgreSQL

dplyrを使用してデータベースにテーブルを書き込む

    私はSQLを学ぶという提案に心から同意しますが、dplyrという事実を利用することができます。 絶対に必要になるまでデータをプルせず、dplyrを使用してクエリを作成します 、TO TABLEを追加します 句を入力し、dplyr::do()を使用してSQLステートメントを実行します。 、次のように:

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

    これを行う小さな関数を書くこともできます:

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

    クエリを次のようにその関数にパイプします:

    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データベーススキーマをGitHubに含める方法は?

    2. MySQLはCSVデータからNULL値をロードします

    3. データベースに保存されているときにJPEGエラー42が発生するのはなぜですか?

    4. MySQL列挙型のパフォーマンス上の利点はありますか?