Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何一次执行多个RSQLite语句或如何转储整个文件?_R_Sqlite - Fatal编程技术网

如何一次执行多个RSQLite语句或如何转储整个文件?

如何一次执行多个RSQLite语句或如何转储整个文件?,r,sqlite,R,Sqlite,使用RSQLite构建SQLite数据库我想一次发送多条语句-这可能吗 为什么这些不起作用: 由于它们似乎无法说服RSQLite函数同时执行多条语句,因此我编写了两个函数来解决此问题: 1 sqlFromFile读入SQL文件并转换文本,以便每条语句只包含一行 2 DBSENDQUERES类似于RSQLite提供的dbSendQuery,但将查询函数应用于所提供文本向量的每一行和每一个元素,以便可以运行一整组语句 # read in sql-statements and preformat th

使用RSQLite构建SQLite数据库我想一次发送多条语句-这可能吗

为什么这些不起作用:


由于它们似乎无法说服RSQLite函数同时执行多条语句,因此我编写了两个函数来解决此问题:

1 sqlFromFile读入SQL文件并转换文本,以便每条语句只包含一行

2 DBSENDQUERES类似于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") )

您能提供createtables.sql的内容吗?当然,这与您尝试的单独语句的内容相同:sql它仍然只执行第一条语句,尽管没有出现错误注意:将sql语句按“;”拆分不是100%防弹的。考虑从Table选择,其中CynnnOne=“文本”;具有分号;'。。。每当“;”时,函数将中断/执行未定义的内容用于分隔语句以外的任何其他方式。
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)
/* 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 );
# 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") )