2016-01-21 47 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")