有没有更快的方法将数据从R上传到MySql?

有没有更快的方法将数据从R上传到MySql?,mysql,r,rodbc,rmysql,Mysql,R,Rodbc,Rmysql,我使用以下代码将一个新表上传到mysql数据库中 library(RMySql) library(RODBC) con <- dbConnect(MySQL(), user = 'user', password = 'pw', host = 'amazonaws.com', dbname = 'db_name') dbSendQuery(con, "CREATE TABLE table_1 ( var_1 VARCHAR(50), var

我使用以下代码将一个新表上传到mysql数据库中

library(RMySql)
library(RODBC)

con <- dbConnect(MySQL(),
  user = 'user',
  password = 'pw',
  host = 'amazonaws.com',
  dbname = 'db_name')

dbSendQuery(con, "CREATE TABLE table_1 (
        var_1 VARCHAR(50),
        var_2 VARCHAR(50),
        var_3 DOUBLE,
        var_4 DOUBLE);
        ")

channel <- odbcConnect("db name")
sqlSave(channel, dat = df, tablename = "tb_name", rownames = FALSE, append = 
TRUE)
库(RMySql)
图书馆(RODBC)

con您可以尝试禁用mysql查询日志:

dbSendQuery(con, "SET GLOBAL general_log = 'off'")
我无法判断您的mysql用户帐户是否具有相应的权限,或者它是否与您的业务需求相冲突

我的想法是:否则,您可以尝试使用Rscript中的for循环,以1000行为一批发送数据,或者在调用
sqlSave


如果您在单个批中发送数据,Mysql可能会尝试将INSERT作为单个事务运行(“全部或无”),如果失败,它将进入恢复或只是在插入一些随机数的行后失败

考虑从R导出CSV以导入MySQL,其中包含:


是的,它们相应的命令行加载器通常被推荐用于MySQL、PostgreSQL等。。。由于进程批量更新比正在运行的
sqlSave()
dbWriteTable()
更好(可能是逐行更新)。当我使用此方法时,我在.local(conn,statement,…)中得到了错误
错误:无法运行语句:在查询过程中与MySQL服务器失去了连接
。有什么建议吗?嗯……把这个查询放在一个.sql脚本中,并通过(黑盒命令行)运行它。您将使用
source/path/to/filename.sql调用它如果运行成功,R就是问题所在和我得到了一个“拒绝访问”错误,所以问题似乎是我的权限。谢谢你的帮助!尝试授予您的用户此类权限或让db管理员设置。
...
write.csv(df, "/path/to/filename.csv", row.names=FALSE)

dbSendQuery(con, "LOAD DATA LOCAL INFILE '/path/to/filename.csv'
                  INTO TABLE mytable
                  FIELDS TERMINATED by ','
                  ENCLOSED BY '"'
                  LINES TERMINATED BY '\\n'")