RJDBC - позволяет использовать JDBC для доступа к базам данных из R

Около

RJDBC представляет собой пакет r, предоставляющий интерфейсы базы данных с использованием jdbc. Это позволяет использовать любые dbms вR сквозь JDBCинтерфейс. Единственное требование - работающая java иJDBC драйвер для ядра базы данных, к которому необходимо получить доступ. RJDBCиспользует интерфейс r-dbi, который также используется пакетами rsqlite, rpostgresql, rmysql и roracle.

пример

library(RJDBC)

drv <- JDBC("com.mysql.jdbc.Driver",
           "/etc/jdbc/mysql-connector-java-3.1.14-bin.jar",
           identifier.quote="`")

conn <- dbConnect(drv, "jdbc:mysql://localhost/test", "user", "pwd")

Загружает драйвер JDBC для MySQL (при необходимости измените путь к файлу JAR драйвера) и подключается к локальной базе данных "test". Ручка подключенияconn используется для всех последующих операций.

(Примечание: пользователи Windows могут использовать drv<-JDBC("sun.jdbc.odbc.JdbcOdbcDriver"), чтобы использовать Sun JDBC для ODBC Bridge с URL-адресом "jdbc:odbc:...".)

Чтобы разрешить более сложные имена для таблиц и столбцов, рекомендуется установить identifier.quote на символ кавычки, поддерживаемый базой данных для цитирования идентификаторов. По умолчанию (NA) идентификаторы не цитируются, но это ограничивает имена, которые могут быть использованы, что влияет наdbReadTable а также dbWriteTable.

dbListTables(conn)
data(iris)
dbWriteTable(conn, "iris", iris, overwrite=TRUE)
dbGetQuery(conn, "select count(*) from iris")
d <- dbReadTable(conn, "iris")

RJDBC поддерживает подготовленные операторы и замену аргументов, поэтому можно выполнять такие запросы, как:

dbGetQuery(conn, "select count(*) from iris where Species=?", "setosa")

Обратите внимание, что время жизни соединения, набора результатов, драйвера и т. Д. Определяется временем жизни соответствующего объекта R. Как только дескриптор R выходит за пределы области видимости (или если он явно удаленrm) и выполняется сборщиком мусора в R, соответствующее соединение или набор результатов закрывается и освобождается. Это важно для баз данных с ограниченными ресурсами (например, Oracle) - вам может потребоваться добавитьgc()вручную, чтобы заставить сборку мусора, если может быть много открытых объектов. Единственным исключением являются драйверы, которые остаются зарегистрированными в JDBC даже после того, как соответствующий объект R выпущен, поскольку в настоящее время нет возможности выгрузить драйвер JDBC (в RJDBC).

Тип Обработка

Обработка типов - довольно сложная проблема, особенно с JDBC, поскольку разные базы данных поддерживают разные типы данных. RJDBC пытается упростить эту проблему путем внутреннего преобразования всех типов данных в символьные или числовые значения. При получении результатов все известные числовые типы преобразуются в числовое представление R, а все другие типы обрабатываются как символы. При назначении параметров в параметризованных запросах используются числовые, целочисленные и символьные типы. Методы удобства, такие какdbReadTable а также dbWriteTableмогут использовать только самые основные типы SQL, потому что они не знают, какая СУБД будет использоваться. СледовательноdbWriteTable использует только INTEGER, DOUBLE PRECISION или VARCHAR(255)создать таблицу. Для всех остальных типов вам придется напрямую использовать операторы DBML.

Лицензия

RJDBCвыпущен под GNU GPL v2.

Репозитории

Другие источники

Связанные теги