我想使用 R Shiny 将 csv 数据上传到 MySQL table 并显示
I would like to use R Shiny to upload csv data to MySQL table and display
很抱歉问了这么长的问题。我将以下 R 脚本写入 upload/append 我定期获取的一些 csv 文件到 MySQL 数据库。示例文件和架构结构已简化。
test.csv
v1,v2,v3
33,78,44
4,49,15
87,132,98
数据库架构名为 shiny,table 名为 tab1,列如下:
id - 主键,自增
v1 - varchar(10)
v2 - varchar(10)
v3 - varchar(10)
第一个代码片段中的基本 R 脚本工作正常,并将 CSV 文件中的数据附加到架构 table 并将自动递增的 ID 号添加到 SQL table.
我想要一个闪亮的应用程序来做同样的事情(上传并附加到 MySQL table),然后在 DT table 中显示刚刚上传的数据。除了以下问题外,第二个片段中的 Shiny 代码可以正常工作:
- 数据已上传到架构 table,但 id 列填充了 v1 数据,v1 列填充了 v2 数据,v2 列填充了 v3 数据,v3 列为 NULL
- 数据未显示在设备标识符中 table 除了值“TRUE”
任何想法或指向包含可能解决方案的页面的链接将不胜感激。
有效的基本 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)
需要稍作改动。像这样使用,您就可以正确显示和上传数据。
data <- read.csv(inFile$datapath, header = TRUE)
dbWriteTable(conn = con, name = 'tab1', value = data, append = TRUE, header = TRUE, row.names=FALSE)
data
很抱歉问了这么长的问题。我将以下 R 脚本写入 upload/append 我定期获取的一些 csv 文件到 MySQL 数据库。示例文件和架构结构已简化。
test.csv
v1,v2,v3
33,78,44
4,49,15
87,132,98
数据库架构名为 shiny,table 名为 tab1,列如下:
id - 主键,自增
v1 - varchar(10)
v2 - varchar(10)
v3 - varchar(10)
第一个代码片段中的基本 R 脚本工作正常,并将 CSV 文件中的数据附加到架构 table 并将自动递增的 ID 号添加到 SQL table.
我想要一个闪亮的应用程序来做同样的事情(上传并附加到 MySQL table),然后在 DT table 中显示刚刚上传的数据。除了以下问题外,第二个片段中的 Shiny 代码可以正常工作:
- 数据已上传到架构 table,但 id 列填充了 v1 数据,v1 列填充了 v2 数据,v2 列填充了 v3 数据,v3 列为 NULL
- 数据未显示在设备标识符中 table 除了值“TRUE”
任何想法或指向包含可能解决方案的页面的链接将不胜感激。
有效的基本 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)
需要稍作改动。像这样使用,您就可以正确显示和上传数据。
data <- read.csv(inFile$datapath, header = TRUE)
dbWriteTable(conn = con, name = 'tab1', value = data, append = TRUE, header = TRUE, row.names=FALSE)
data