问题标签 [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.

0 投票
2 回答
5751 浏览

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?

0 投票
0 回答
214 浏览

sql-server - RSQLServer:dbRollback 后无法开始嵌套事务

背景

在我的数据库中,我有一些唯一性约束。如果数据破坏了其中一种情况,我会收到一条错误消息,例如Violation of UNIQUE KEY constraint.

tryCatch在我的代码中使用,以捕获此错误并向用户返回有意义的消息。到目前为止,一切都很好。

但是,如果我在捕获此错误后尝试在服务器上运行任何新事务,我会收到另一条错误消息,说我Cannot begin a nested transaction.

我的发现

我追查了错误,我发现当dbRollback被调用(显式或在 内withTransaction)时,不能再提交任何新dbBegin的(通过dbWriteTable和朋友显式或隐式地)。

我需要摆脱困境的是运行一个dbCommit,被允许运行另一个dbBegin

查看代码,dbCommitdbRollback发现在前一种情况下 setAutoCommit设置为 true,这dbBegin表明我们没有嵌套事务。情况并非如此dbRollback

问题

所以我的问题是:这是假定的行为吗?也就是说,我是想dbCommit在操作回滚后运行手册,还是这是一个错误?

代码

0 投票
1 回答
1204 浏览

mysql - 将 MySQL 数据库中的表读入 R

我正在尝试使用DBIR 中的包从我的数据库中读取表:

但显然 R 中不允许使用表名,因为我收到错误消息:

如果在 MySQL 数据库中我将​​该表的名称更改为类似的名称table1,那么我可以轻松地在 R 中读取它。

有人可以帮助我如何在 R 中读取这些表,因为显然我无法更改所有表的名称。

0 投票
2 回答
893 浏览

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 控制台日志:

0 投票
1 回答
2107 浏览

sql - R 中的 dbGetQuery 会截断非常长的 SQL 查询(长度为 10564 个字符)

我一直在尝试执行一个非常长的 SQL 查询并将结果放入 R 中的数据框中。但是以下行会引发错误并在控制台中显示部分查询(截断它)

查询的长度为 10564 个字符,其中我使用了很多 CTE。dbGetQuery我已经通过 R Studio 中的选项菜单删除了字符串截断,但我想知道R 中的函数是否存在字符限制?

有什么建议么?

  • RDMBS:DB2(在 IBM AS400 上),
  • R 包:DBI(库 - RJDBC)
0 投票
1 回答
168 浏览

sql-server - 在不创建显式 DBI 对象的情况下将 dplyr 与数据库一起使用

大多数显示如何将 dplyr 与数据库一起使用的代码示例都涉及创建数据库连接对象:

但是,假设我省略了创建db对象:

这有什么后果吗?我会用完数据库资源/内存泄漏/等吗?

我想到的 DBMS 是 SQL Server,驱动程序包是 odbc,以防万一。

0 投票
0 回答
104 浏览

r - 每次我获取我的 R 脚本时,它都会泄漏一个数据库连接

我无法在此处粘贴整个脚本,但我正在解释情况。如果您曾经有泄漏的数据库连接,那么您就会知道我在说什么。

DBI我有一个 R 脚本文件,它有许多使用& RMySQLR 包使用数据库连接的函数(大约 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,在主代码之外没有发生。

那么,为什么会发生连接泄漏?

0 投票
1 回答
1260 浏览

sql-server - 如何从 dplyr 管道创建 SQL Server 表

由于dbplyr 中的错误copy_to并且compute当前不适用于 SQL Server 连接。

dbplyr repo 上有一个活动的 PR 可以解决这个问题,但没有表明何时合并(或何时到达 CRAN)。同时,我如何从查询中创建一个表,而不将数据读入 R?

0 投票
1 回答
830 浏览

mysql - 当字符串在 R 中包含 UTF-8 字符时,DBI 会出现查询问题

我正在使用以下函数将此查询发送到 MySQL 数据库:

korisnik如果字符参数包含非 UTF-8 字符,则函数运行良好。但如果它包含克罗地亚语 UTF-8 字符,则会返回空表。我在 MySQL 数据库中尝试了两个排序规则: utf8_general_ci 和 utf8_croatian_ci 。

我也尝试在查询之前设置名称 utf-8,但它没有帮助。

0 投票
1 回答
764 浏览

r - 如何更改数据库连接区域设置?

在 R 中使用 DBI 包时,我无法更改“语言环境”。更具体地说,我的数据库包含诸如“é、è、ê、...”之类的字符,而 DBI 无法正确读取它们。

当我使用 RODBC 包执行相同的查询时,它确实得到了正确的结果。我的问题:如何使用 DBI 包获得正确的结果(即正确读取“é, è, ê, ...”)?

这应该是一个可重现的例子:

如果这是相关的,这是我的会话信息: