2016-01-21 46 views
1

我正在使用R将数据帧插入到MySQL数据库中。我有下面的代码,一次插入1000行成功。但是,如果我有一个包含成千上万行的数据框是不现实的。你将如何做一个使用R的批量插入?它甚至有可能吗?MySQL和R,一次插入超过1000行

## R and MySQL 
library(RMySQL) 

### create sql connection object 
mydb = dbConnect(MySQL(), dbname="db", user='xxx', password='yyy', host='localhost', unix.sock="/Applications/MAMP/mysql/mysql.sock") 

# get data ready for mysql 
df = data.format 

# chunks 
df1 <- df[1:1000,] 
df2 <- df[1001:2000,] 
df3 <- df[2001:nrow(df),] 

## SQL insert for data.frame, limit 1000 rows 
dbWriteTable(mydb, "table_name", df1, append=TRUE, row.names=FALSE) 
dbWriteTable(mydb, "table_name", df2, append=TRUE, row.names=FALSE) 
dbWriteTable(mydb, "table_name", df3, append=TRUE, row.names=FALSE) 
+3

如果你尝试将它全部用在写一次会发生什么' dbWriteTable(mydb,“table_name”,df)'? – Gregor

+0

看看我的答案http://stackoverflow.com/questions/34591444/how-to-insert-data-to-sql-server-table-using-r/34591753#34591753。尽管它讲述的是SQL Server,但在您的情况下也是如此。 –

回答

0

为了完整,为纽带建议,写DF到一个临时表,并插入到目标表如下:

dbWriteTable(mydb, name = 'temp_table', value = df, row.names = F, append = F) 
dbGetQuery(mydb, "insert into table select * from temp_table")