python+mysql:实现一千万条数据插入数据库
生活随笔
收集整理的這篇文章主要介紹了
python+mysql:实现一千万条数据插入数据库
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)現(xiàn)思路如下:
- 復(fù)制原數(shù)據(jù)庫(kù)moviedb至newmoviedb
- 設(shè)置max_allowed_packet,以保證一條insert語(yǔ)句可以插入足夠多的元組
- 用python生成一條一次插入10000個(gè)元組的insert語(yǔ)句
- 用python生成一個(gè)包含100條insert語(yǔ)句的事務(wù),保存至sql文件
- 用navicat運(yùn)行該sql文件
至此就可以實(shí)現(xiàn)一百萬(wàn)條記錄的插入了(我的電腦耗時(shí)327s?好像很慢!?)
之后再套一層循環(huán)就可以繼續(xù)完成1千萬(wàn)條記錄的插入了。
下面給出可能用到的步驟(如未說(shuō)明,代碼默認(rèn)為控制行或者mysql環(huán)境下的命令):
復(fù)制數(shù)據(jù)庫(kù)
創(chuàng)建新數(shù)據(jù)庫(kù)newmoviedb
登錄并創(chuàng)建數(shù)據(jù)庫(kù):
mysql -u root -pCREATE DATABASE `newmoviedb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;復(fù)制moviedb至newmoviedb
復(fù)制數(shù)據(jù)庫(kù)
mysqldump moviedb -u root -pchouxianyu --add-drop-table | mysql newmoviedb -u root -pchouxianyu上面chouxianyu是我的mysql密碼
進(jìn)入newmoviedb
use newmoviedb;設(shè)置max_allowed_packet
設(shè)置max_allowed_packet為100M
刪除movies中所有元素(調(diào)試用)
delete from movies;生成一條insert語(yǔ)句
下邊是insert.py
生成一個(gè)事務(wù)
以下是transaction.py
總結(jié)
以上是生活随笔為你收集整理的python+mysql:实现一千万条数据插入数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用python实现图书管理系统
- 下一篇: Python解析json字符串,json