关于批量插入数据之我见(100万级别的数据,mysql)

~~~

$dsn = 'mysql:host=localhost;dbname=test';

$db = new PDO($dsn,'root','',array(PDO::ATTR_PERSISTENT => true));

//删除上次的插入数据

$db->query('delete from `test`');

//开始计时

$start_time = time();

$sum = 1000000;

// 测试选项

$num = 1;

if ($num == 1){

// 单条插入

for($i = 0; $i < $sum; $i++){

$db->query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");

}

} elseif ($num == 2) {

// 批量插入,为了不超过max_allowed_packet,选择每10万插入一次

for ($i = 0; $i < $sum; $i++) {

if ($i == $sum - 1) {

//最后一次

if ($i%100000 == 0){

$values = "($i, 'testtest')";

$db->query("insert into `test` (`id`, `name`) values $values");

} else {

$values .= ",($i, 'testtest')";

$db->query("insert into `test` (`id`, `name`) values $values");

}

break;

}

if ($i%100000 == 0) {

//平常只有在这个情况下才插入

if ($i == 0){

$values = "($i, 'testtest')";

} else {

$db->query("insert into `test` (`id`, `name`) values $values");

$values = "($i, 'testtest')";

}

} else {

$values .= ",($i, 'testtest')";

}

}

} elseif ($num == 3) {

// 事务插入

$db->beginTransaction();

for($i = 0; $i < $sum; $i++){

$db->query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");

}

$db->commit();

} elseif ($num == 4) {

// 文件load data

$filename = dirname(__FILE__).'/test.sql';

$fp = fopen($filename, 'w');

for($i = 0; $i < $sum; $i++){

fputs($fp, "$i,'testtest'\r\n");

}

$db->exec("load data infile '$filename' into table test fields terminated by ','");

}

$end_time = time();

echo "总耗时", ($end_time - $start_time), "秒\n";

echo "峰值内存", round(memory_get_peak_usage()/1000), "KB\n";

?>

~~~

php 100万数据,关于批量插入数据之我见(100万级别的数据,mysql)相关推荐

  1. sql server批量插入数据库的操作100万条数据

    1.数据库中 首先创建表->连接数据库->通过循环插入数据 2.建立测试表 在这里插入代码[c-sharp] view plain copy --Create DataBase creat ...

  2. sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析

    假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...

  3. linux批量es数据,Elasticsearch批量插入数据

    Elasticsearch批量插入数据 使用bulk批量操作数据库 1. 创建批量操作文件 格式: {"index":{"_index":"home& ...

  4. mysql一次读取500条数据_mysql批量插入500条数据

    表格结构如下 需求name和password字段,生成如下格式: 总共批量生成500个. 解决思路:可以用mysql 存储过程 如果linux环境下可以用shell 我们先测试第一种,用存储过程.DE ...

  5. pymysql单条插入数据和批量插入数据:

    一.单条插入数据: #!/usr/bin/python3   import pymysql   # 打开数据库连接 db = pymysql.connect("localhost" ...

  6. 安卓mysql插入数据_Android批量插入数据到SQLite数据库的方法

    Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知.因此在Android中插入数据时,使用批量插入的方式 ...

  7. jdbc批量插入的4种方式【百万条数据插入只需几秒】

    mysql数据库准备 #打开数据库test01; use test01; #创建表a,表a包含int型的id列.可变长度型的name[长度20个字符] create table a (id INT,N ...

  8. excel表格数据的批量插入

    添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spri ...

  9. 读取excel表格并且解析数据进行批量插入

    直接上代码 package ffcs.cn.peam.function.controller;import java.io.File; import java.io.IOException; impo ...

最新文章

  1. python学习第三天-Linux入门之二
  2. 解决Extjs中textarea不支持keyup事件的问题
  3. excel公式 某一个单元格等于另一个单元格的值_15个excel小技巧,简单易学,一看就会,收藏备用吧...
  4. ArrayList的实现原理--转
  5. 找出那个数字出现3次的数字
  6. 1148 Werewolf - Simple Version 甲级
  7. AndroidStudio_解决butterknife在module中使用BindView Attribute value must be constant---Android原生开发工作笔记229
  8. c#解决TCP“粘包”问题
  9. spring-security 学习参考网站
  10. 清华大学发布OpenNE:用于网络嵌入的开源工具包
  11. arraylist线程安全吗_面试官:用过ThreadLocal吗?它保证线程安全的原理是啥?
  12. php对接海康视频教程_手把手教你php对接海康api
  13. Android SystemServer 进程
  14. 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
  15. android 苹果备忘录,你会不会用苹果备忘录?白白放弃这么逆天的功能,不如换安卓机!...
  16. 在UE5中创建一个受战锤启发的角色
  17. 虚幻4和Unity3D应该学哪个
  18. Python简单爬虫(以爬取豆瓣高分图书为例)
  19. 测试人员如何区分前端和后台BUG方法流程
  20. Linux系统 | vim配置

热门文章

  1. Java基础---常用类之Math类 and Syetem类
  2. EasyUI--权限管理(二)显示左侧菜单
  3. 【Java 多线程】互斥锁,自旋锁和读写锁
  4. 51Nod——1004 n^n的末位数字
  5. Python爬虫实战(一):爬糗事百科段子
  6. CALL 和 ret 指令
  7. Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
  8. Flutter TextButton 详细使用配置、Flutter ButtonStyle样式概述实践
  9. Flutter AnimatedSwitcher 动画切换组件的基本使用
  10. 安卓JNI开发-01