我想導入一個csv文件到MySQL數據庫,並且我在groovy中使用Hibernate創建了一個腳本。事情是,csv文件非常龐大,大約有四千八百萬行。我打開一個會話併爲每一行提交一個交易,但後來我發現這需要很長時間。在運行腳本一天後,通過添加到數據庫的行速度,需要一個多月才能導出所有內容。所以,我想也許,瓶頸在於打開一個會話併爲每一行提交事務......然後我決定打開一個會話,讀取每一行,爲每一行實例化一個實體,將它保存在會話中,在讀完所有4800萬行並在會話中存儲4800萬個實體之後,對所有這些實例進行單個事務處理。那也不管用。有沒有辦法以更快的方式將這個csv文件導入到mysql數據庫?或者它應該真的需要那麼長時間?使用休眠導入csv文件到MySQL數據庫
1
A
回答
3
我reccommend您不要使用Java和使用LOAD DATA INFILE 'c:/tmp/discounts.csv' ...
1
我發現解決問題的方法非常有趣的聯繫。也許它會有用 http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/
+1
您能否將鏈接的內容放入您的答案中以確保能夠抵禦死鏈接的未來挑戰?謝謝 – JustinJDavies 2014-09-01 08:50:58
2
在腳本中休眠?你一定在開玩笑! :)
我會堅持groovy.sql.Sql
,因爲它使用簡單靈活,並沒有hibernate的負擔與映射或會話刷新。
腳本可能會尋找如下:
Sql db = new Sql(...)
int flushCounter = 0
new File('my.csv').splitEachLine(/;/){ parts -> // or a full-blown csv-parser here
db.executeInsert 'insert into mytable (id,a,b,c) values (null,?,?,?)', parts
flushCounter++
if(0 == flushCounter % 1000) db.commit() // flush each 1000 records
}
db.commit()
db.close()
相關問題
- 1. 使用php mysql導入csv文件到數據庫
- 2. 使用MySQL終端導入500mb csv文件到數據庫中
- 3. 使用php導入大型csv文件到mysql數據庫
- 4. 將數據導入csv文件到mysql
- 5. mysql異常導入csv文件到mysql數據庫
- 6. 導入csv文件到oracle數據庫
- 7. 如何使用codeigniter將csv文件數據導入到mysql數據庫中?
- 8. 導入CSV數據到MySQL
- 9. 從CSV文件導入到mysql數據庫錯誤
- 10. 將CSV文件導入到MySQL數據庫的工具?
- 11. 將CSV文件導入到mysql數據庫
- 12. 在PHP中將CSV文件導入到Mysql數據庫中
- 13. 需要幫助導入.csv文件到mysql數據庫
- 14. 導入CSV文件到MySQL
- 15. 在休眠中導入/導出爲csv
- 16. 使用java從JSON文件導入數據到MySQL數據庫
- 17. 使用django web應用程序將csv文件導入到mysql數據庫
- 18. 導入CSV文件到Oracle數據庫中使用Java
- 19. 使用php導入csv文件到數據庫
- 20. 使用grails和GROM將csv文件導入到數據庫中
- 21. 使用Python將CSV文件導入到sqlite3數據庫表中
- 22. 如何將數據從csv文件導出到mysql數據庫?
- 23. RoR - 使用smarterCSV gem導入csv到MySQL數據庫
- 24. 增強csv文件數據庫導入
- 25. csv文件導入數據庫,php
- 26. 存儲圖像到MySQL數據庫使用stuts 2和休眠
- 27. 將mysql數據導出到csv文件
- 28. 數據庫+休眠
- 29. 如何將CSV文件中的數據導入到MySQL數據庫
- 30. 如何從csv文件導入數據到數據庫中?
您的意思是進口? – 2014-09-01 08:15:31
是「從mysql導出」還是「導入到mysql」? – cfrick 2014-09-01 08:15:36
我不知道如何做到這一點與休眠,但你可以很容易地導入一個csv文件到MySQL與加載數據infile http://stackoverflow.com/questions/14127529/mysql-import-data-from-csv-using -load-data-infile – luanjot 2014-09-01 08:18:38