Описание тега rjdbc
Около
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.
Лицензия
Репозитории
Другие источники
Связанные теги
- база данных, jdbc
- ¨R"сек г-DBI, rsqlite, rpostgresql, rmysql и roracle пакеты