首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想使用Shiny将csv数据上传到MySQL表并显示

我想使用Shiny将csv数据上传到MySQL表并显示
EN

Stack Overflow用户
提问于 2022-05-03 13:47:11
回答 1查看 159关注 0票数 0

为这个冗长的问题道歉。我编写了下面的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表中的数据。除了以下问题外,第二个代码片段中的闪亮代码可以工作:

  1. 数据上传到模式表,但id列填充v1数据,v1列填充v2数据,v2列填充v3数据,v3列是空
  2. 数据,除了值“TRUE”

之外,v3列没有显示在DT表中。

任何想法或链接到网页可能的解决方案,将不胜感激。

工作的基本R脚本如下:

代码语言:javascript
运行
复制
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)

我尝试的闪亮代码如下所示:

代码语言:javascript
运行
复制
# 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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 13:52:42

需要做些小小的改变。这样使用,您就可以正确地显示和上传数据。

代码语言:javascript
运行
复制
data <- read.csv(inFile$datapath, header = TRUE)
dbWriteTable(conn = con, name = 'tab1', value = data, append = TRUE, header = TRUE, row.names=FALSE)
data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72100384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档