1
rd-11. リレーショナル
データベースとの連携
金子邦彦
データサイエンス演習
(R システムを使用)
https://www.kkaneko.jp/de/rd/index.html
Rシステムでのデータの保存
2
Rシステム
作業空間
(ワークスペース)
の保存用ファイル
テーブルオブジェクトを
CSV ファイルに
エクスポート
※1ファイル=1オブジェクト
Rデータファイル(拡張子: .Rd)
へのワークスペースのセーブと
ロード
※1ファイルに,
複数オブジェクト保存可能
リレーショナルデータベース
管理システム
なぜデータベースシステム
•巨大(メモリに入りきらないくらい)なデータを、
軽快に扱いたい
•データの共有、データへの並行アクセスを簡単に
行えるようにしたい
3
リレーショナルデータベースでは
•4
リレーショナル・データベースには、データ
の種類ごとに分かれた、たくさんのテーブル
が格納される
ID
商品
単価
1
みかん
50
2
りんご
100
ID 名前
1
A
2
B
◇テーブル名: 商品
◇テーブル名: 会員
リレーショナルデータベースのテーブルの例
•5
ID
商品
単価
1
みかん
50
2
りんご
100
レコード
レコード
データ本体
◇テーブル名: 商品
レコード
レコード
データ本体
◇テーブル名: 会員
ID 名前
1
2
1.種類の違うデータは、別のテーブル
に分ける
2.レコードが、データの基本単位
会員1人 = 1レコード
ビデオ1本 = 1レコード
3.データを識別したいときは
主キーを使う.
どの会員がどのビデオを借りて
いるかの記録にも主キーを使う
会員番号
氏名
1
AA
2
CC
3
BB
4
DD
◆テーブル名:会員
ID 名前 貸出者
1
ハリーポッター
1
2
ハリーポッター
3
3
ドラえもん
3
◆ テーブル名:ビデオ
リレーショナルデータベース
6
11-2. Rシステムで
リレーショナルデータベース
を扱う
7
RSQLite パッケージ
8
Rシステム
リレーショナルデータベース
管理システム
SQLite バージョン 3
RSQLite
パッケージ
仲立ち
RSQLite パッケージの機能
•SQLite3 にアクセスして、SQLite3 のほぼ全機能
を扱うことができる
テーブル定義
テーブル操作(行の挿入、削除、値の変更)
SQL問い合わせ
•Rのテーブルオブジェクトを、SQLite3 の「テー
ブル」と相互に変換することが簡単にできる機能
も
9
Rシステム
リレーショナルデー
タベース
管理システム
SQLite バージョン
3
仲立ち
Rのテーブルオブジェクトと、
SQLite3 の「テーブル」
name
price
apple
100
orange
50
banana
230
10
扱いたいデータ
R のテーブルオブジェクト
(コンストラクタと確認表示) SQLite3 のテーブル
テーブル定義と
テーブル生成
確認表示
RSQLite パッケージのインストール
•install.packages("RSQLite")
11
※他のリレーショナルデータベース管理システム MySQL, Oracle, PostgreSQL,
SQLServer などを使いたいときは,
それぞれ用のパッケージを探して,インストールできる
R のテーブルオブジェクトを、SQLite に格納
(そのとき、SQLite のテーブルに自動変換)
library(dplyr)
x <- data_frame( name=c("apple", "orange", "banana"),
price=c(100, 50, 230) )
print(x)
library(RSQLite)
conn = dbConnect( dbDriver("SQLite"), dbname="hoge.db")
dbConnect(conn)
dbWriteTable(conn, "xx", data.frame(x))
dbDisconnect(conn) 12
R のテーブルオブジェクト
(オブジェクト名は x)
格納
SQLite3 のテーブル
(テーブル名は xx)
エラーメッセージが
出ないことを確認
R のテーブルオブジェクトを、SQLite に格納
(そのとき、SQLite のテーブルに自動変換)
•Rのテーブルオブジェクト =SQLite のテーブ
ル
13
R のテーブルオブジェクト
(オブジェクト名は x)
格納
R のテーブルオブジェクト
(テーブル名は xx)
わざとオブジェクト x を消してください
14
あとで,SQLite から読み込みたいから
R のテーブルオブジェクトを、SQLite に格納
(そのとき、SQLite のテーブルに自動変換)
library(RSQLite)
conn = dbConnect( dbDriver("SQLite"), dbname="hoge.db")
dbConnect(conn)
y <- dbReadTable(conn, "xx")
print(y)
dbDisconnect(conn)
15
R のテーブルオブジェクト
(オブジェクト名は y)
SQLite3 のテーブル
(テーブル名は xx)
エラーメッセージが
出ないことを確認
SQL の例
library(RSQLite)
conn = dbConnect( dbDriver("SQLite"), dbname="hoge.db")
dbConnect(conn)
r1 <- dbGetQuery(conn, "select name from xx;")
print(r1)
dbDisconnect(conn)
16
SQLite3 のテーブル
(テーブル名は xx)
エラーメッセージが
出ないことを確認