gpt4 book ai didi

mysql - 批量上传到 AWS 上托管的 MySQL 时出错

转载 作者:行者123 更新时间:2023-11-29 09:52:29 25 4
gpt4 key购买 nike

我与 AWS 上托管的 MySQL 建立了连接。目前,对于批量上传,我正在使用 DBI dbWriteTable 函数。缺点是,插入具有 10k 个观察值的 data.frame 需要 5 分钟。我决定尝试使用 LOAD DATA INFILE 查询来减少上传批量数据帧所需的时间。但是,我收到一条错误消息,告诉我当前的用户 ID 被拒绝执行此类命令。

下面是我尝试过的代码,后面是错误消息。

library(RMariaDB)
library(DBI)

con = dbConnect(MariaDB(),
dbname = "testing123",
host = "********",
user = "*****",
password = "******",
port = 3306
)

dbWriteTable(con, "mt", mtcars)

##create a data frame that has about 6000 rows
mtcars.extended = cbind(mtcars, rep(unname(unlist(mtcars)), 20))

#use the standard dbwritetable to append the rows
dbWriteTable(con, "mt", mtcars, append = T)
###This took 5 minutes but worked

##So I decided to save mtcars.extended as a csv and try the bulk
upload
write.table(mtcars.extended, "mtext.csv")

query = "LOAD DATA INFILE 'mtext.csv' INTO TABLE mt"

dbGetQuery(con, query)
Error in result_create(conn@ptr, statement, is_statement) :
Error executing query: Access denied for user 'testing123'@'%'
(using password: YES)

dbSendStatement(con, query)
Error in result_create(conn@ptr, statement, is_statement) :
Error executing query: Access denied for user 'testing123'@'%'
(using password: YES)

我希望看到的是相对快速地插入数据表“mt”而不进行任何覆盖。但 AWS 似乎不允许我进行批量上传。

感谢 Matus,我解决了这个问题。唯一的问题是,我在批量上传时收到 NA 。

  query = "LOAD DATA LOCAL INFILE 'mt.csv' INTO TABLE mtcars"

enter image description here

最佳答案

我猜您正在谈论 RDS MySQL。您在尝试执行 LOAD DATA INFILE 查询时看到该权限错误,仅仅是因为您没有 RDS 托管系统的完全 root 权限。

您可以尝试运行LOAD DATA LOCAL INFILE,而不是将--local-infile=1标志设置为true。这应该可以工作,因为您不需要该权限来运行此查询。

关于mysql - 批量上传到 AWS 上托管的 MySQL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54562830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com