python+mysql:实现一千万条数据插入数据库
实现思路如下:
- 复制原数据库moviedb至newmoviedb
- 设置max_allowed_packet,以保证一条insert语句可以插入足够多的元组
- 用python生成一条一次插入10000个元组的insert语句
- 用python生成一个包含100条insert语句的事务,保存至sql文件
- 用navicat运行该sql文件
至此就可以实现一百万条记录的插入了(我的电脑耗时327s?好像很慢!?)
之后再套一层循环就可以继续完成1千万条记录的插入了。
下面给出可能用到的步骤(如未说明,代码默认为控制行或者mysql环境下的命令):
复制数据库
创建新数据库newmoviedb
登录并创建数据库:
mysql -u root -pCREATE DATABASE `newmoviedb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
复制moviedb至newmoviedb
复制数据库
mysqldump moviedb -u root -pchouxianyu --add-drop-table | mysql newmoviedb -u root -pchouxianyu
上面chouxianyu是我的mysql密码
进入newmoviedb
use newmoviedb;
设置max_allowed_packet
设置max_allowed_packet为100M
set global max_allowed_packet = 100*1024*1024;
删除movies中所有元素(调试用)
delete from movies;
生成一条insert语句
下边是insert.py
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
insertStr = "INSERT INTO movies(title,year,length,movietype,studioname,producerC) VALUES"
value1_str = "('mymovietitle',"
# j
value2_str = ",120,'sciFic','MGM',100)"
# ,;
num_value = 10000f = open(r'C:\Users\Cxy\Documents\Navicat\MySQL\Servers\MySQL\newmoviedb\insertRow.sql', 'w') # 清空文件内容再写f.write(insertStr)
for j in range(1, num_value):f.write(value1_str)f.write(str(j))f.write(value2_str)f.write(',')f.write(value1_str)
f.write(str(num_value))
f.write(value2_str)
f.write(';')f.close()
生成一个事务
以下是transaction.py
transaction_begin_str = "START TRANSACTION;\n"
transaction_end_str = "COMMIT;\n"insertStr = "INSERT INTO movies(title,year,length,movietype,studioname,producerC) VALUES"
value1_str = "('mymovietitle',"
# j
value2_str = ",120,'sciFic','MGM',100)"
# ,;
num_value = 10000
num_sql = 100
# 打开文件
f = open(r'C:\Users\Cxy\Documents\Navicat\MySQL\Servers\MySQL\newmoviedb\transaction.sql', 'w') # 清空文件内容再写# 将SQL语句写入文件
f.write(transaction_begin_str)
for i in range(1, num_sql+1):f.write(insertStr)for j in range(1, num_value):f.write(value1_str)f.write(str(i*num_value*10+j))f.write(value2_str)f.write(',')f.write(value1_str)f.write(str(i*num_value*10+num_value))f.write(value2_str)f.write(';\n')
f.write(transaction_end_str)# 关闭文件
f.close()
python+mysql:实现一千万条数据插入数据库相关推荐
- Mysql中一千万条数据怎么快速查询
文章来源: 学习通http://www.bdgxy.com/ 目录 普通分页查询 如何优化 偏移量大 采用id限定方式 优化数据量大问题 普通分页查询 当我们在日常工作中遇到大数据查询的时候,第一反应 ...
- mysql插10万条数据_MySQL数据库插入100w条数据要花多久?
MySQL数据库插入100w条数据要花多久? 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理SQL 4.多值插入SQL 5.事务(N条提交一次) # 多线程插入(单表) 问:为何对同一个表 ...
- JAVA高效率 (秒级) 将千万条数据导入数据库 (已封装工具类)【详解】【一看就懂】
该gif做了加速处理,便于观看~ 今天在将一个500w+条数据的文件导入至数据库时,遇到一个异常,相信做大数据应该都有遇到.500w条数据说多不多,说少也不少.既然问题出现了,那么就一定要解决. 异 ...
- 【Mysql】大批量(百万级)数据插入数据库应该怎么做(提高效率)?
一:在数据库中进行操作 1.合并sql语句(一个sql插入单条数据转为一个sql插入多条数据) 一个sql插入一条数据: insert into table_name(id,name) values( ...
- mysql查出倒序第一条数据_[数据库]mysql 记录根据日期字段倒序输出
[数据库]mysql 记录根据日期字段倒序输出 0 2016-07-21 11:00:17 我们知道倒序输出是很简单的 select * from table order by id desc 直接这 ...
- mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?
最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...
- mysql插10万条数据_如何快速安全的插入千万条数据?
点击上方 小伟后端笔记 ,选择 星标 公众号 重磅资讯.干货,第一时间送达 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半 ...
- insert批量插入500ms_如何快速安全的插入千万条数据
作者:ksfzhaohui 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文 ...
- 如何快速安全的插入千万条数据?
最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...
最新文章
- TensorRT 7.2.1开发初步
- 阿里算法,浙大博士带你写项目经历!
- 1.17 局部内部类
- 深度解密Go语言之pprof
- linux系统迁移的重要配置文件,mylinuxbackup
- [vue] vue性能的优化的方法有哪些?
- 计算机数学基础 刘树利,计算机数学基础课件教学课件作者刘树利11课件.ppt
- 一起谈.NET技术,WPF Ribbon 开发资料分享
- building a blog
- 台式电脑计算机怎么添加任务栏,win10系统任务栏添加计算机快捷图标的详细技巧...
- 实战matlab之文件与数据接口技术,实战MATLAB之文件与数据接口技术
- C#获取 Flv视频文件播放时间长度等信息
- log4j 日志输出级别
- 计算各个城市实际地区生产总值(附各个城市实际GDP)
- 【Week 8 作业 B】猫猫向前冲
- 手把手教你如何安装水晶易表——靠谱的安装教程
- 华为防火墙双机热备-HRP
- 基于STM32的ESP8266天气时钟(1)---------AT指令获取天气数据
- ASUS AC1900p 梅林固件编译 asuswrt-merlin
- 关于origin简单作图