送信 - 取得 - クリア
これまでに何度か 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