是否可以运行连接到sqlite数据库的Shiny应用程序,并且可以进行更改并保存到该数据库?我的问题类似于这个问题 - R script do not write in sqlite db if I run the script in shiny但是没有接受的答案,所以不确定它是否有效。
答案 0 :(得分:1)
是。这是可能的,这是一个例子:
创建一个简单的数据库:
library(RSQLite)
con <- dbConnect(SQLite(), dbname="sample.sqlite")
dbWriteTable(con, "test", data.frame(value1 = letters[1:4], value2 = letters[5:8]))
dbDisconnect(con)
闪亮的应用程序:
library(shiny)
library(RSQLite)
runApp(list(
ui = bootstrapPage(
textInput("value1", label = "Value 1"),
textInput("value2", label = "Value 2"),
actionButton("action", label = "Write to DB"),
hr(),
tableOutput("table")
),
server = function(input, output){
data <- eventReactive(input$action, {
con <- dbConnect(SQLite(), dbname="sample.sqlite")
dbWriteTable(con, "test", data.frame(value1 = input$value1, value2 = input$value2, stringsAsFactors = FALSE), append = TRUE)
data <- dbReadTable(con, "test")
dbDisconnect(con)
return(data)
})
output$table <- renderTable(data())
}))
答案 1 :(得分:0)
是的,这是可能的。您可以使用RSQlite
包。您需要先在计算机上安装SQLite并创建数据库。您需要确保数据库文件和包含它的文件夹都具有shiny
用户(或任何运行闪亮应用程序的用户 - 默认用户为shiny
)的写权限。
这是您连接和保存数据的方式:
db <- dbConnect(SQLite(), file)
query <- sprintf("INSERT INTO %s (%s) VALUES ('%s')", TABLE_NAME,
paste(names(data), collapse = ", "), paste(data, collapse = "', '"))
dbGetQuery(db, query)
dbDisconnect(db)
这是一个Shiny应用程序,它有更完整的示例,说明如何使用SQLite和其他一些有光泽的数据库,以防万一。免责声明:我写了那个应用程序。 http://daattali.com/shiny/google-form-mock/