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) 

関連する記事

  • 基本統計量基本統計量 [latexpage] 基本統計量とは、データの基本的な特徴を表す値のことで、代表値と散布度に区分できる。代表値とは、データを代表するような値のことで、例えば、平均値、最大値、最小値などがある。散布度とは、データの散らばり度合いを表すような値のことで、例えば、分散、標準偏差などがある。 平均値 […]
  • ggplot2を用いて階層的クラスタリングの結果を可視化する方法ggplot2を用いて階層的クラスタリングの結果を可視化する方法 R言語のggplot2パッケージを用いて階層的クラスタリングの結果を可視化する方法についてお伝えいたします。 一般に、階層的クラスタリングの結果は、デンドログラムまたは樹形図として可視化されます。 ggplot2パッケージには、デンドログラムまたは樹形図を可視化する機能が備わっておりません。 しかし、ggplot2パッケージと合わせてggdendroパッケージを用い […]
  • RStudioのエディタテーマ一覧RStudioのエディタテーマ一覧 RStudio(ver 1.0.153)のエディタテーマの一覧をご紹介します。 Ambiance Chaos Chrome Clouds Midnight Clouds Cobalt Crimson Editor Dawn Dreamweaver Eclipse Idle Fingers Katzenmilch Kr […]
  • R実装と解説 対応のない2標本の母平均の差の検定(母分散が異なる) [latexpage] 母分散が異なるの場合の対応のない2標本の母平均の差の検定とは、2つの母集団が正規分布に従い、ともに母分散が異なるとき、一方の母平均が他方の母平均と「異なる」または「大きい」、「小さい」かどうかを、検定統計量がt分布に従うことを利用して検定します。 統計的検定の流れ 検定の大まかな流れを確認しておきます。 […]
  • R スミルノフ・グラブス検定を繰り返し用いて外れ値を除去する方法 スミルノフ・グラブス検定は、正規分布を仮定した標本において、最大値または最小値が外れ値かどうか判定する検定の一つである。 外れ値を除去する際、外れ値を一つずつ検証することよりも、外れ値がすべて除去されたデータだけがほしいときもあるのではないだろうか。 ここでは、正規分布を仮定したデータからスミルノフ・グラブス検定を繰り返し用いて外れ値を除去するソースコードをご紹介する […]
R UbuntuでRからMariaDBへ接続する方法