UbuntuでRからMariaDBへ接続して、データフレームとして取得する方法をお伝えする。
環境
Ubuntuのバージョン
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
MariaDBのバージョン
$ mysql --version
mysql Ver 15.1 Distrib 10.1.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Rのバージョン
$ R --version
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.
準備
ターミナルを開き、libmariadb-client-lgpl-devをインストールする。
$ sudo apt-get install libmariadb-client-lgpl-dev
パッケージのインストール
RからMariaDBへ接続して操作するための中心となるパッケージは、DBIとRMySQLである。
DBIは、RとRDBMS(リレーショナル・データベース管理システム)間で接続するためのインターフェースを提供している。
RMySQLは、MySQLまたはMariaDBへのDBIインターフェースの実装である。
R上で次のコマンドから必要なパッケージをインストールする。
> install.packages("DBI")
> install.packages("RMySQL")
Socketの確認
MariaDBとの接続はSocketファイルを通して行われる。そのため、Socketファイルの場所を確認するためにMariaDBの設定ファイルを確認しておく。
$ vim /etc/mysql/my.cnf
MariaDBのインストール時から変更していなければ、/var/run/mysqld/mysqld.sockが該当のファイルである。
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
RからMariaDBへ接続
RからローカルのMariaDBへ接続し、テーブルをデータフレームとして取得する方法は、次のコードを参考にしてほしい。
# ライブラリの読み込み
library(RMySQL)
# 接続
con <- dbConnect(RMySQL::MySQL(),
dbname = "データベース",
username = "ユーザー",
password = "パスワード",
host = "localhost",
port = 3306,
unix.socket="/var/run/mysqld/mysqld.sock")
# テーブルをデータフレームとして取得
df <- dbReadTable(con, "テーブル")
# 切断
dbDisconnect(con)
# データが取得できているかを確認
str(df)
unix.socketを指定していない場合
dbConnect関数でunix.socketを指定していない場合、次のようなエラーが出て接続できない。
Socketファイルの場所を確認して、指定する必要がある。
.local(drv, ...) でエラー:
Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
R UbuntuでRからMariaDBへ接続する方法