- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
使用 RSQLite 构建 SQLite 数据库我想一次发送多个语句 - 这可能吗?
为什么这些不起作用:
sql <- readLines("createtables.sql")
dbSendQuery(con,sql)
...和...
sql <- paste(readLines("createtables.sql"),collapse="")
dbSendQuery(con,sql)
...和...
sql <- paste(readLines("createtables.sql"),collapse="\n")
dbSendQuery(con,sql)
虽然这些可以:
sql <- "CREATE TABLE birthdays (
nameid INTEGER PRIMARY KEY AUTOINCREMENT ,
firstname VARCHAR(100) NOT NULL ,
lastname VARCHAR(100) NOT NULL ,
birthday DATE ) ; "
dbSendQuery(con,sql)
sql <- "/* table def: foodtypes */
CREATE TABLE foodtypes (
foodid INTEGER PRIMARY KEY AUTOINCREMENT ,
foodname VARCHAR(100) NOT NULL,
healthy INTEGER,
`kcal/100g` float );"
dbSendQuery(con,sql)
createtables.sql的内容是:
/* table def: birthdays */
CREATE TABLE birthdays (
nameid INTEGER PRIMARY KEY AUTOINCREMENT ,
firstname VARCHAR(100) NOT NULL ,
lastname VARCHAR(100) NOT NULL ,
birthday DATE ) ;
/* table def: foodtypes */
CREATE TABLE foodtypes (
foodid INTEGER PRIMARY KEY AUTOINCREMENT ,
foodname VARCHAR(100) NOT NULL,
healthy INTEGER,
`kcal/100g` float );
最佳答案
因为他们似乎没有办法说服 RSQLite 函数一次执行多个语句,所以我写了两个函数来解决这个问题:
(1) sqlFromFile()
读取 SQL 文件并转换文本,使每个语句恰好占一行。
(2) dbSendQueries()
类似于 RSQLite 提供的 dbSendQuery()
,但将查询函数应用于查询的每一行(向量的每个元素)提供文本以便可以运行一大堆语句。
# read in sql-statements and preformat them
sqlFromFile <- function(file){
require(stringr)
sql <- readLines(file)
sql <- unlist(str_split(paste(sql,collapse=" "),";"))
sql <- sql[grep("^ *$", sql, invert=T)]
sql
}
# apply query function to each element
dbSendQueries <- function(con,sql){
dummyfunction <- function(sql,con){
dbSendQuery(con,sql)
}
lapply(sql, dummyfunction, con)
}
# solution for example in question
dbSendQueries( con, sqlFromFile("createtables.sql") )
关于r - 如何一次执行多个 RSQLite 语句或如何转储整个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18914283/
我正在查看 documentation of RSQLite .我创建了一个数据库并使用 推送了一些数据 mydb = 150) dbSendQuery(mydb, paste("UPDATE mtc
我刚刚开始涉足 sqlite 的世界,主要是通过 R 的接口(interface)包“RSQLite”。 但是,似乎在处理 sqlite 数据库时让计算机进入休眠状态使其锁定,然后尝试关闭连接不会做任
我完全有可能忽略了一些东西,但是在使用 RSQLite 包时,是否仍然可以在 R 脚本中利用特殊字符串“:memory:”来加速数据检索? 最佳答案 是的,仍然可以使用特殊字符串 :memory: .
我经常使用具有 >10,000 列的大型 CSV 文件 (>50GB)。我正在考虑将信息读入 RSQLite这样我就可以轻松进行查询和子集化。 问题 SQLite 在单个 SQL 中有 2000 个字
我正在尝试使用 RSQLite 从我的数据库中读取表格。所有表的列名都带有“.”。 例如:我的测试表有2列:index, first.name 如何编写查询来过滤带有名字列的测试表: 我的代码是: d
我有一个包含 x、y 和 z 列的 sqlite 表。 x 和 y 是唯一键,z 是值。 我想用 R 向这个表中插入数据。如果插入重复记录 - 基于 x 和 y 字段,我希望 sqlite 拒绝该记录
我一直找不到关于 RSQLite 如何处理因子的文档。从快速测试(见下文)来看,它们似乎已转换为字符。 问题一:有没有办法把它们作为因子保存下来?我可以想到一些笨拙的方法(主要涉及一个单独的表或存储因
如何使用 RSQLite 编写带有日期的 SQL 查询。下面是一个例子。 dbGetQuery不返回任何行。 require(RSQLite) require(ggplot2) data(presid
我正在尝试使用 RSQLite 包(我也尝试过 sqldf 包)将一个大的 csv 文件加载到 SQL lite 数据库中。该文件包含所有英国邮政编码和它们的各种查找值。 我想避免将其加载到 R 中,
在使用 RSQLite 1.0.0 包从 SQLite 3 数据库中提取数据时,我遇到了一个奇怪的现象。除日期时间值的年份外,所有内容都被截断! 看一个例子: 下面我正在提取 DATETIME 列:
我有一个 SQLite 数据库,我使用 R 的 RSQLite 包进行查询。我有一个分类向量,我想通过它来过滤我的查询,这样我的查询看起来像这样: dbGetQuery(mydb,
所以我试图访问我的数据库文件但没有成功。这是我的脚本: library(DBI) library(sqldf) drv <- dbDriver("SQLite") con <- dbConnect(d
使用 RSQLite 构建 SQLite 数据库我想一次发送多个语句 - 这可能吗? 为什么这些不起作用: sql <- readLines("createtables.sql") dbSendQue
我在 R 中使用 RSQLITE 来构建数据库并执行“JOIN”操作并使用以下方法提取行: res<-dbSendQuery(con," SELECT DISTINCT all_transcr
我已经开始使用 RSQLite 和 dplyr 来有效地处理大型数据集。但是,我一直无法协调如何让 RSQLite 格式化日期或这里有哪些最佳实践。下面的例子应该说明这个过程对我来说在哪里失败: li
我有一个包含各种 token 和频率计数的数据库。当我尝试使用 RSQLite 从 R 中检索这些时,我得到的负数很低,因此可能存在缓冲区溢出问题。如果我在 say sqliteman 中打开数据库并
如何在 dbGetQuery() 的 bind.data 参数中为像 这样的 SQL 语句传递标量和一组值 select * from tst where x = ? and y in (?) 这是我
在 SQLite 中,我想找到我用 GROUP BY 定义的(记录的)系列的一阶差分的标准偏差.我的数据提供者给了我一个每日价格序列,但我想找到年化的每日波动率(每日返回的标准差——该系列的自然对数的
使用RSQLite在 RStudio 中运行大型查询时遇到以下错误 Error in rsqlite_send_query(conn@ptr, statement) : database or
我正在构建一个供内部使用的包,并尝试从用户那里抽象出所有可能的数据库交互。我需要在函数内连接到数据库并断开与数据库的连接(我认为)。但是,断开连接不起作用。 `my_func = function()
我是一名优秀的程序员,十分优秀!