PDO处理大批量数据的入库

<?php
//最东端 东经135度2分30秒
//最西端 东经73度40分
//最南端 北纬3度52分
//最北端 北纬53度33分
//转换为度的单位
$dbName = ‘txhl‘;//数据库名称
$tableName = ‘ah‘;//数据表名称
$username = ‘root‘;//用户名
$password = ‘root‘;//密码
$num = 100000;//规定入库数据条数
try
{
$conn = new PDO(‘mysql:host=<你要用到的数据库IP地址>;dbname=‘.$dbName,$username,$password,array(PDO::ATTR_PERSISTENT,true));
$result = $conn->exec("truncate {$tableName}");

if($result == false && $conn->errorInfo()[0] != 00000)
{
throw new PDOException("Error :".$conn->errorInfo()[2]);
}
set_time_limit(200);
for($i=0;$i<$num;$i++){
$east = 135+20.30/60;
$west = 73+40/60;
$south = 3+53/60;
$north = 53+33/60;
$du = rand(36,38);//经度 75 135 (10份 6度/)lng
$wei = rand(117,122);//纬度 18 51 (10份 3度/)lat
$fen = rand(100000,999999);
$fen1 = rand(100000,999999);
$latlng = $du.‘.‘.$fen;
$lnglat = $wei.‘.‘.$fen1;
$conn->exec("insert into eh(lat,lng) values($latlng,$lnglat)");
echo time()."插入成功,自增id为".$conn->lastInsertId().PHP_EOL;

}
ignore_user_abort(); //终止脚本的执行
}catch(PDOException $e)//否则抛出异常
{
echo $e->getMessage().PHP_EOL; exit;
}catch(Exception $e)//否则抛出异常
{
echo $e->getMessage().PHP_EOL; exit;
}

?>

时间: 2025-01-09 20:56:51

PDO处理大批量数据的入库的相关文章

对于大量数据存储入库问题的解决办法

在开发过程中,有时可能会遇到这种情况,当主线程中开启了N个子线程,而每个子线程中运算分析结果的数据量特别的大,如果对于这样的大批量数据在子线程中进行入库,那么会造成大量的连接资源浪费,同时会造成数据库阻塞影响程序执行效率.这时候解决方案有两个: 将子线程中的数据统一用主线程接收,在主线程中进行入库操作. 但是这种方案争对执行完成后,数据量较小的情况,不会造成内存溢出的情况下,如果在数据量非常庞大的情况下,就会造成程序崩溃. 重新开启一个线程,这个线程是专用于数据存储入库的. 因为每个线程的执行速

jdbc批量插入实现大批量数据快速插入

今天在做一个将excel数据导入数据库的程序时,由于数据量大,准备采用jdbc的批量插入.于是用了preparedStatement.addBatch();当加入1w条数据时,再执行插入操作,preparedStatement.executeBatch().我原以为这样会很快,结果插入65536条数据一共花30多分钟,完全出乎我的意料.于是问了一下同事,他们在处理这种大批量数据导入的时候是如何处理的,发现他们也是用的jdbc批量插入处理,但与我不同是:他们使用了con.setAutoCommit

Java中List和Map的特性对两组大批量数据进行匹配 (转)

在项目中遇到一个问题:要将通过http方式发送过来的大批量数据(这个数据保守估计每次请求在10万条左右),要和数据库中的另一批数据(数据库中的记录1万条左右)进行匹配(匹配:指两组数据中的某几个字段值相等),匹配上的数据保存在数据库中,匹配不上的直接扔掉.或者说:有一个List<String> strList,List<Person> personList,strNoList.size是1万,personList.size是10万, 然后要从personList中把person的i

java大批量数据导入(MySQL)

? 版权声明:本文为博主原创文章,转载请注明出处 最近同事碰到大批量数据导入问题,因此也关注了一下.大批量数据导入主要存在两点问题:内存溢出和导入速率慢. 内存溢出:将文件中的数据全部取出放在集合中,当数据过多时就出现Java内存溢出,此时可通过调大JVM的最大可用内存(Xmx)解决, 但终究不是王道.    MySQL支持一条SQL语句插入多条记录的操作,并且效率比单条插入快的不是一点点:但是MySQL一次可接受的数据包大小 也是有限制的,当一次插入过多时也可能造成数据包内存溢出,此时可通过调

大批量数据导入数据库,dbf导入oracle,csv导入oracle

Excel 07-2003一个工作表最多可有65536,行最多可有256列:Excel 2007及以后版本,一个工作表最多可有1048576行,16384列. 一.小批量数据处理: 方法一:用excel可以直接打开dbf或csv文件,数据库表for update,直接把excel表中想要的列值直接复制到pl/sql中 相对应字段. 方法二:若是dbf文件可用dbfplus工具转换成csv文件,打开pl/sql中的 工具>文本导入器,在'到Oracle的数据'中选择到导入哪个用户下的哪个表,点击左

postgresql大批量数据导入方法

一直没有好好关注这个功能,昨天看了一下,数据库插入有瓶颈,今天研究了一下: 主要有以下方案: 1.使用copy从文件导入: copy table_001(a, b, "f", d, c, "e") from 'd:/data1.txt' (delimiter ','); 速度极快: 不带索引: 查询成功: 共计 69971 行受到影响,耗时: 4351 毫秒(ms).        查询成功: 共计 69971 行受到影响,耗时: 4971 毫秒(ms).     

【hbase】——HBase 写优化之 BulkLoad 实现数据快速入库

1.为何要 BulkLoad 导入?传统的 HTableOutputFormat 写 HBase 有什么问题? 我们先看下 HBase 的写流程: 通常 MapReduce 在写HBase时使用的是 TableOutputFormat 方式,在reduce中直接生成put对象写入HBase,该方式在大数据量写入时效率低下(HBase会block写入,频繁进行flush,split,compact等大量IO操作),并对HBase节点的稳定性造成一定的影响(GC时间过长,响应变慢,导致节点超时退出,

删除大批量数据时总结

错误做法: 做法1:查询出所有满足条件的list列表集合,然后遍历list集合,单个删除库中的对象. 正确做法: 做法2:直接用hql语句或者sql语句执行满足条件的删除操作. 原因: 删除小数据量时,第一种做法没有影响. 但是删除大批量数据时,数据库会报错.因为数据库没有那么多的连接数.

ODP方式,大批量数据写入ORACLE数据库

项目中在同步数据的时候,需要把获得的数据DataTable,写入oracle数据库 因为System.Data.OracleClient写入方式写入大批量数据特别慢,改用Oracle.DataAccess写入方式(上代码): ODP工具类: 需要引入命名空间: using Oracle.DataAccess;using Oracle.DataAccess.Client;using Oracle.DataAccess.Types; 1 ODP_Inserter 2 { 3 /// <summary