SQLite はパブリックドメインのリレーショナルデータベース管理システムである。非常に軽く,小規模のデータベース構築によく使われる。Macにも /usr/bin/sqlite3 というコマンドが入っている。
リレーショナルデータベースやSQLに疎いかたは私のデータベースのページを参照されたい。
RからSQLiteを使うには RSQLite パッケージを使う。現在は Hadley Wickham がメンテナンスしており,開発版はGitHubの hadley/RSQLite にある。
install.packages("RSQLite")library("RSQLite")con = dbConnect(SQLite(), "tmp.db", synchronous="off")
dbConnect() の最初の引数は必ず SQLite() とする。2番目の引数はデータベースファイルのファイル名(パス)である。ただし,空文字列 "" はテンポラリファイルで自動消去される。":memory:" はメモリ上に作成される。オプション synchronous="off" を付けておくとSQLiteへの書き込みがかなり速くなる可能性がある。
dbSendQuery(con, "create table hoge(hinmei text, nedan int)")dbListTables(con)[1] "hoge"dbListFields(con, "hoge")[1] "hinmei" "nedan"dbSendQuery(con, "insert into hoge values('りんご', 500)")dbSendQuery(con, "insert into hoge values('みかん', 300);")dbGetQuery(con, "select * from hoge")hinmei nedan1 りんご 5002 みかん 300dbSendQuery(con, "update hoge set nedan=200 where hinmei='みかん'")dbGetQuery(con, "select * from hoge")hinmei nedan1 りんご 5002 みかん 200dbReadTable(con, "hoge")hinmei nedan1 りんご 5002 みかん 200dbWriteTable(con, "iris", iris)[1] TRUEdbListTables(con)[1] "hoge" "iris"dbGetQuery(con, "select * from iris order by 'Sepal.Length' limit 3")Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.3 0.2 setosadbDisconnect(con)
dbGetQuery() や dbReadTable() の返す値は data.frame であるが,文字列を自動で factor に変換することはない。
dbDisconnect() でRからの接続は切れるが,ファイル(上の例では tmp.db)は残っているので,Mac(またはLinux)のターミナルで sqlite3 tmp.db と打ち込むとデータベースを開くことができる。逆に sqlite3 コマンドで作ったデータベースをRSQLiteで開くことも当然できる。