始める無料で始める

送信 - 取得 - クリア

これまでに何度か dbGetQuery() を使ってきました。これは DBI パッケージの仮想関数ですが、実際の実装は RMySQL パッケージが担っています。内部では次の手順が実行されています。

  • dbSendQuery() で指定したクエリを送信する。
  • データベース上でクエリを実行した結果を dbFetch() で取得する。
  • dbClearResult() で結果をクリアする。

今回は dbGetQuery() は使わず、上記の手順を自分で実装してみましょう。少し手間はかかりますが、結果を一度にではなくチャンクごとに取得できる利点があります。これは、dbFetch()n 引数を指定することで実現できます。

この演習はコースの一部です

Rで学ぶ中級データインポート

コースを見る

演習の手順

  • すでに用意されている dbSendQuery() の呼び出しを確認してください。これは、id が 4 を超えるユーザーのコメントを選択します。
  • dbFetch() を2回使います。1回目は、n 引数を 2 に設定して、クエリ結果から2件だけ取り込みます。2回目は、残りをすべて取り込みます(n は指定しないでください)。どちらの呼び出しでも、得られたデータフレームをそのまま表示してください。
  • dbClearResult()res をクリアしてください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Connect to the database
library(DBI)
con <- dbConnect(RMySQL::MySQL(),
                 dbname = "tweater",
                 host = "courses.csrrinzqubik.us-east-1.rds.amazonaws.com",
                 port = 3306,
                 user = "student",
                 password = "datacamp")

# Send query to the database
res <- dbSendQuery(con, "SELECT * FROM comments WHERE user_id > 4")

# Use dbFetch() twice



# Clear res
コードを編集して実行