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
エラーメッセージが
出ないことを確認