问题标签 [r-dbi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 将 MS Access 数据库连接到 R
我想用 DBI 包将 MS Access 数据库连接到 R。我试试这个:
library(DBI)
con <- dbConnect(odbc::odbc(), "BASE_MEPSA")
我有这个错误
错误:nanodbc/nanodbc.cpp:950: HY024: [Microsoft][Pilote ODBC Microsoft Access] « (Inconnu) »
但是使用 RODBC 我没有问题
library(RODBC)
base1<-odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/IPS/Desktop/divers/dt/stateduc_R/BASE_MEPSA.mdb")
如何使用 DBI 包将 MS Access 连接到 R?
sql-server - RSQLServer:dbRollback 后无法开始嵌套事务
背景
在我的数据库中,我有一些唯一性约束。如果数据破坏了其中一种情况,我会收到一条错误消息,例如Violation of UNIQUE KEY constraint
.
我tryCatch
在我的代码中使用,以捕获此错误并向用户返回有意义的消息。到目前为止,一切都很好。
但是,如果我在捕获此错误后尝试在服务器上运行任何新事务,我会收到另一条错误消息,说我Cannot begin a nested transaction.
我的发现
我追查了错误,我发现当dbRollback
被调用(显式或在 内withTransaction
)时,不能再提交任何新dbBegin
的(通过dbWriteTable
和朋友显式或隐式地)。
我需要摆脱困境的是运行一个dbCommit
,被允许运行另一个dbBegin
。
查看代码,dbCommit
我dbRollback
发现在前一种情况下
setAutoCommit
设置为 true,这dbBegin
表明我们没有嵌套事务。情况并非如此dbRollback
:
问题
所以我的问题是:这是假定的行为吗?也就是说,我是想dbCommit
在操作回滚后运行手册,还是这是一个错误?
代码
mysql - 将 MySQL 数据库中的表读入 R
我正在尝试使用DBI
R 中的包从我的数据库中读取表:
但显然 R 中不允许使用表名,因为我收到错误消息:
如果在 MySQL 数据库中我将该表的名称更改为类似的名称table1
,那么我可以轻松地在 R 中读取它。
有人可以帮助我如何在 R 中读取这些表,因为显然我无法更改所有表的名称。
r - R DBI Sparklyr DBWritetable 运行但没有结果
从 MS-SQL 环境进入也具有 Spark 访问权限的 HIVE 环境。尝试使用 RStudio 和 R(有时使用 rPython 的 python)来替换我曾经使用 T-SQL 的一些东西以及我以前从未做过的一大堆事情是正确的。
为了使其工作,我需要能够读取和写入 HIVE DB。
我已经使用 spark 和 R 包 sparklyr 连接,并且可以使用带有 spark 连接的 R 包 DBI 连接到我们的 HIVE 集群,并将数据拉入 R 数据帧就好了:
上面的代码每次都有效。我还可以使用 dbGetQuery 在引用的 sql 语句的上下文中在数据库中创建表而不会出现问题,因此它不是写权限问题。
但是,当我尝试将数据从 R 帧写回 HIVE 集群时,如下所示:
它运行没有错误,但表没有显示,我无法查询它。
如果我再次尝试写表,我会收到此错误:
任何想法可能会发生什么?除了 DBI 之外,我还有更好的方法吗?
提前感谢您的帮助!
下面是我运行这些语句时的整个 RStudio 控制台日志:
sql - R 中的 dbGetQuery 会截断非常长的 SQL 查询(长度为 10564 个字符)
我一直在尝试执行一个非常长的 SQL 查询并将结果放入 R 中的数据框中。但是以下行会引发错误并在控制台中显示部分查询(截断它)
查询的长度为 10564 个字符,其中我使用了很多 CTE。dbGetQuery
我已经通过 R Studio 中的选项菜单删除了字符串截断,但我想知道R 中的函数是否存在字符限制?
有什么建议么?
- RDMBS:DB2(在 IBM AS400 上),
- R 包:DBI(库 - RJDBC)
sql-server - 在不创建显式 DBI 对象的情况下将 dplyr 与数据库一起使用
大多数显示如何将 dplyr 与数据库一起使用的代码示例都涉及创建数据库连接对象:
但是,假设我省略了创建db
对象:
这有什么后果吗?我会用完数据库资源/内存泄漏/等吗?
我想到的 DBMS 是 SQL Server,驱动程序包是 odbc,以防万一。
r - 每次我获取我的 R 脚本时,它都会泄漏一个数据库连接
我无法在此处粘贴整个脚本,但我正在解释情况。如果您曾经有泄漏的数据库连接,那么您就会知道我在说什么。
DBI
我有一个 R 脚本文件,它有许多使用& RMySQL
R 包使用数据库连接的函数(大约 50 个) 。我通过 4 或 5 个函数合并了所有数据库访问。我on.exit(dbDisconnect(db))
在每个使用 a 的函数中dbConnect
使用。
我发现仅在加载此脚本时使用source("dbscripts.R")
会导致一个数据库连接泄漏。我在运行命令时看到了这个
[[1]] MySQL连接:0,607>
[[2]] MySQL连接:0,608>
[[3]] MySQL连接:0,609>
[[4]] MySQL连接:0,610>
我每次都会看到一个多数据库连接添加到列表中。这很快达到 16,我的脚本停止工作。
问题是,我无法找出导致泄漏的代码行。我检查dbConnect
了代码中的每一行。它们都在函数内dbConnect
,在主代码之外没有发生。
那么,为什么会发生连接泄漏?
sql-server - 如何从 dplyr 管道创建 SQL Server 表
由于dbplyr 中的错误,copy_to
并且compute
当前不适用于 SQL Server 连接。
dbplyr repo 上有一个活动的 PR 可以解决这个问题,但没有表明何时合并(或何时到达 CRAN)。同时,我如何从查询中创建一个表,而不将数据读入 R?
mysql - 当字符串在 R 中包含 UTF-8 字符时,DBI 会出现查询问题
我正在使用以下函数将此查询发送到 MySQL 数据库:
korisnik
如果字符参数包含非 UTF-8 字符,则函数运行良好。但如果它包含克罗地亚语 UTF-8 字符,则会返回空表。我在 MySQL 数据库中尝试了两个排序规则: utf8_general_ci 和 utf8_croatian_ci 。
我也尝试在查询之前设置名称 utf-8,但它没有帮助。
r - 如何更改数据库连接区域设置?
在 R 中使用 DBI 包时,我无法更改“语言环境”。更具体地说,我的数据库包含诸如“é、è、ê、...”之类的字符,而 DBI 无法正确读取它们。
当我使用 RODBC 包执行相同的查询时,它确实得到了正确的结果。我的问题:如何使用 DBI 包获得正确的结果(即正确读取“é, è, ê, ...”)?
这应该是一个可重现的例子:
如果这是相关的,这是我的会话信息: