标签: monetdblite

访问R外的MonetDBLite

我在R中使用MonetDBLite创建了一个大型数据库,现在我想访问R之外的数据库(例如,使用通用数据库GUI).

有没有办法做到这一点?我不想复制数据,因为我仍然希望通过R访问它.我不需要从R和SQL GUI同时访问数据库,但我想根据需要在两者之间切换.

r monetdb monetdblite

7
推荐指数
0
解决办法
364
查看次数

直接使用dplyr突变数据库表中的变量

这是MonetDBLite数据库文件中的mtcars数据。

library(MonetDBLite)
library(tidyverse)
library(DBI)

dbdir <- getwd()
con <- dbConnect(MonetDBLite::MonetDBLite(), dbdir)

dbWriteTable(conn = con, name = "mtcars_1", value = mtcars)

data_mt <- con %>% tbl("mtcars_1")
Run Code Online (Sandbox Code Playgroud)

我想使用dplyr mutate创建新变量并将其添加(提交!)到数据库表中吗?就像是

data_mt %>% select(mpg, cyl) %>% mutate(var = mpg/cyl) %>% dbCommit(con)
Run Code Online (Sandbox Code Playgroud)

这样做时,所需的输出应该相同:

dbSendQuery(con, "ALTER TABLE mtcars_1 ADD COLUMN var DOUBLE PRECISION")
dbSendQuery(con, "UPDATE mtcars_1 SET var=mpg/cyl") 
Run Code Online (Sandbox Code Playgroud)

那怎么办

r dplyr r-dbi monetdblite dbplyr

6
推荐指数
1
解决办法
933
查看次数

将新列添加到MonetDBLite表

我正在尝试使用R + MonetDB作为大数据分析堆栈,但是在创建新列并使用我的分析数据填充它时遇到了问题.这是一个玩具示例:

library(MonetDBLite)
library(DBI)

data(mtcars)
db <- dbConnect(MonetDB.R::MonetDB(), embedded="./test.db")

# load mtcars into the database
dbWriteTable(conn=db, value = mtcars, name = "mtcars", overwrite=TRUE)

## Add a new column
dbSendQuery(db, "ALTER TABLE mtcars ADD v1 DOUBLE;")


## insert data into the new column
v1 <- mtcars["mpg"] * pi
dbSendQuery(db, "INSERT INTO mtcars (v1) VALUES (?)", bind.data=v1)
Run Code Online (Sandbox Code Playgroud)

并且错误消息:

Error in .local(conn, statement, ...) : 
  Unable to execute statement 'INSERT INTO mtcars (v1) VALUES ('c(65.9734457253857, 65.9734457253857, 71.6283125018473, 67.23008278...'.
Server says 'ERROR: 49.6371639267187, …
Run Code Online (Sandbox Code Playgroud)

sql r monetdb monetdblite

5
推荐指数
1
解决办法
442
查看次数

在C++/Qt应用程序中没有R的MonetDBLite

有没有办法在不安装R包的情况下将MonetDBLite用作C++应用程序中的存储引擎?或者有没有其他方法可以将MonetDB用作SQLite等嵌入式数据库?

c++ qt monetdb monetdblite

2
推荐指数
1
解决办法
370
查看次数

标签 统计

monetdblite ×4

monetdb ×3

r ×3

c++ ×1

dbplyr ×1

dplyr ×1

qt ×1

r-dbi ×1

sql ×1