想用php向mysql数据库中批量插入20万条记录,但总在不超过2万的时候就停止了

想用php向mysql数据库中批量插入20万条记录,但总在不超过2万的时候就停止了,第1张

因为php脚本有一个执行超时时间默认30秒

所以对批量处理大量查询会因为超时而停止处理

可以在代码第一行加入

set_time_limit(0);//永不超时

建议对大量sql处理使用mysql命令行处理

如果你会点php基础我可以给你点参考意见

一个是,你这个文件肯定是txt格式的

$fp = fopen('xxxtxt','r');//用只读方式打开文件

$getsource = fgets($fp);//读取第一行,主要是用于去除第一行

while(!feof($fp)){

$getsource = fgets($fp);//获取有用数据

$insource = explode(" <>", $getsource);//把一行文字变成数组,按<>符号分割

/---------------下面写数据存储的sql-------------------/

/---------------上面写数据存储的sql-------------------/

}

我默认为你对php和mysql是熟悉的,不然你也不会打算用php写这个程序,我只提供你点思路,php对文件 *** 作不熟悉的话你可以参考下这篇文章

>

<php if($_POST['do_hf']=='回复')//当'回复'按钮触发执行 { $bbs_hfnr=trim($_POST['textf']);//得到多行文本框 $sql="insert into table (text) values('"$bbs_hfnr"'); //SQL 连接和插入我就不写了 不知道你什么数据库 } echo "<form action='' method='post'>"; echo "<table >"; echo "<tr><td><textarea name='textf' class='inputtext' cols='70' rows='6'></textarea></td></tr>"; echo "<tr><td><input type='submit' name='do_hf' value='回复'>"; <input type='reset' value='重置' /></td></tr>"; echo "</table>"; echo "</form>"; >

按照楼上的方法把模版的输入框弄成<input type='text' name='username[]' />这个,然后$data = $_POST['username'],得到的$data是二维数组,然后添加数据不需要foreach的,直接D('表名')->addAll($data);就可以了

把textarea 中需要分字段的地方加上逗号 到后台 把字串分割转为数组 , (也可以不加逗号 到后台用正则表达式把换行变成逗号)判断是否够50个元素 不够50个元素 补足50个, 然后 用循环 变成带引号的字符串  左后用一句SQL  搞定

textare 的内容

后台的php

<php

$arr=  explode(',',$_POST[''a1']);  //转为数组

$arrlen=50 ; // 有50个字段 

$valuestr="'"$_POST['date']"'," //先把date所谓值加进去

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

    if  (isset($arr[$i))

        $valuestr="'"$arr[$i]"',";

    else{

        $valuestr="'',"

    }

}

$valuestr=substr($valuestr,0,sizeof($valuestr)-1)//去掉最后的逗号

//得到一个字串, 是所有字段的值 用逗号分割, 顺序一定要一致, 而且数目不能多也不能少

$sql="INSERT INTO ka_tan VALUES("$valuest")";

>

在HTML里这样写:

1

2

3

4

5

6

<form

<input type="text" name="haoma[]" />

<input type="text" name="haoma[]" />

<input type="text" name="haoma[]" />

第N个

foreach($_POST['haoma'] as $v){

$sql="insert into haoma values('',$v)";

}

当然这样写一条一条的效率是会慢,再改一下

foreach($_POST['haoma'] as $v){

$values="('',$v),";

}

$values=substr($values,0,strlen($values)-1);

$sql="insert into haoma values $values";

下面的query我就不写了

PHP框架 Laravel Eloquent ORM 批量插入数据是通过传入数组实现的。

比如:

DB::table('users')->insert(array(

array('email' => 'taylor@examplecom', 'votes' => 0),

array('email' => 'dayle@examplecom', 'votes' => 0),

));

以上是 *** 作表users,执行insert语句,参数是一个数组,封装了两条数据,这里可以自定义数据,insert内部就编程批量插入了。

然后调用save方法:

public static function create(array $attributes)

{

$model = new static($attributes);

$model->save();

return $model;

}

以上就是关于想用php向mysql数据库中批量插入20万条记录,但总在不超过2万的时候就停止了全部的内容,包括:想用php向mysql数据库中批量插入20万条记录,但总在不超过2万的时候就停止了、用php将数据写进数据库中、Php textarea多行文本框 如何批量添加进数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10183912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存