为这个冗长的问题道歉。我编写了下面的R脚本,以便定期将一些csv文件上传/追加到MySQL数据库。简化了示例文件和模式结构。
test.csv
v1,v2,v3
33,78,44
4,49,15
87,132,98
数据库模式称为闪亮,表名为tab1,列如下:
id -主键,自动增量
v1 - varchar(10)
v2 - varchar(10)
v3 - varchar(10)
第一个代码段中的基本R脚本工作良好,并将CSV文件中的数据附加到模式表中,并将一个自动递增的id号添加到SQL表中。
我希望一个闪亮的应用程序也这样做(上传并附加到一个MySQL表),然后显示刚刚上传到DT表中的数据。除了以下问题外,第二个代码片段中的闪亮代码可以工作:
之外,v3列没有显示在DT表中。
任何想法或链接到网页可能的解决方案,将不胜感激。
工作的基本R脚本如下:
library(RMySQL)
#Read in data to a data frame
data <- read.csv(test.csv", header = TRUE, sep = ",")
# input database access values
user = 'user'
password = 'password'
host = 'host'
dbname='shiny'
#connect to database
con <- dbConnect(MySQL(),
                 user = user,
                 password = password,
                 host = host,
                 dbname = shiny)
# write to database
dbWriteTable(conn = con, name = 'tab1', value = data, append = TRUE, header = TRUE, row.names=FALSE)
# remove data and inputs and disconnect
rm(data)
rm(dbname)
rm(host)
rm(password)
rm(user)
rm(con)
lapply(dbListConnections(MySQL()), dbDisconnect)我尝试的闪亮代码如下所示:
# Shiny app for SQL append
library(shiny)
library(DT)
library(RMySQL)
# database access information
user = 'root'
password = 'rustymarmot'
host = 'localhost'
dbname='shiny'
#connect to database
con <- dbConnect(MySQL(),
                 user = user,
                 password = password,
                 host = host,
                 dbname = shiny)
## USER INTERFACE
ui <- fluidPage(
  
  ## App title
  titlePanel("SQL Upload"),
  
  ## Sidebar layout 
  sidebarLayout(
    sidebarPanel(
      fileInput("file1", label = "File input", accept = c(".xlsx", ".xls", ".csv", ".ods"))
    ),
    ## End Sidebar layout
    mainPanel(
      tableOutput("contents")
    )
  )
)
# SERVER
server = shinyServer(function(input,output){
  output$contents = renderTable({
    inFile <- input$file1
    
    if (is.null(inFile))
      return(NULL)
    
    read.csv(inFile$datapath, header = TRUE)
    dbWriteTable(conn = con, name = 'tab1', value = inFile$datapath, append = TRUE, header = TRUE, row.names=FALSE)
  })
})
shinyApp(ui, server)发布于 2022-05-10 13:52:42
需要做些小小的改变。这样使用,您就可以正确地显示和上传数据。
data <- read.csv(inFile$datapath, header = TRUE)
dbWriteTable(conn = con, name = 'tab1', value = data, append = TRUE, header = TRUE, row.names=FALSE)
datahttps://stackoverflow.com/questions/72100384
复制相似问题