首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量上传到亚马逊网络服务上托管的MySQL时出错

问批量上传到亚马逊网络服务上托管的MySQL时出错
EN

Stack Overflow用户
提问于 2019-02-07 05:31:14
回答 1查看 76关注 0票数 0

我已经与亚马逊网络服务上托管的MySQL建立了连接。目前,对于批量上传,我使用的是DBI dbWriteTable函数。缺点是,插入具有10k观察值的data.frame需要5分钟。我决定尝试使用LOAD DATA INFILE query来减少上传批量数据帧所需的时间。但是,我收到一个错误,告诉我当前的用户id被拒绝执行这样的命令。

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

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

代码语言:javascript
复制
  query = "LOAD DATA LOCAL INFILE 'mt.csv' INTO TABLE mtcars"

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 06:09:47

我猜你说的是RDS MySQL。您在尝试执行LOAD DATA INFILE查询时会看到权限错误,这仅仅是因为您没有RDS托管系统的完全根权限。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54562830

复制
相关文章

相似问题

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