Welcome 微信登录

首页 / 数据库 / MySQL / 一次性向MySQL数据库中插入6000条数据 测试代码

之前遇到个问题,需要将一个文件夹中的所有文件名取出并 存入到数据库中。采用php脚本测试,读取一个文件名,就立即存储到数据库中,结果花了我230多秒的时间,速度实在太慢!原因分析:insert 语句被执行了6000次,导致速度特别慢!改进方法:1、用php脚本 将 所有的文件名都存入到一个文本文件中filename.txt(一个文件名占一行),实测脚本执行时间 1.5262秒。2、用phpfgets()函数取出filename.txt中的每一行数据,保存到buffer数组中,将buffer数组写入到一条insert语句中,执行一次insert语句,实测脚本执行时间 0.0629秒。代码1如下:<?php
$st=microtime_float();//自定义函数,在代码2中可见。
     $cout=0;$dir="e:/pydot";$talbe="pydot2";
              if(is_dir($dir)){
                   if($dh=opendir($dir)) {
                            while(($file=readdir($dh)) !== false){
                                 if($file!="."&&$file!=".."){
                                 $file=mb_convert_encoding($file,"UTF-8","EUC-CN");
                                                                                                 
                                 //$sql="insertinto ".$talbe."(name) values("".$file."");";
                                 
                                 //$m->execute($sql);
                                 $filename="test/filename.txt";
                                 if(!$handle = fopen($filename, "a")) {
                                    echo "不能打开文件$filename";
                                    exit;
                                 }
                            //将$file写入到我们打开的文件中。
                                 fputs($handle,$file." ");
                                 $cout++;
                                 //echo$cout,":",$file."<br>";
                                 echo$file."<br>";
                                 }
                            }
                   closedir($dh);
                   }
              }
     $et=microtime_float();
     $t=$et-$st;
     echo"insert into talbe ",$talbe,"",$cout,"times; <br>";
     echo"Total time $t seconds. ";
?>代码2如下:<?php   
     $server="localhost";
     $user="root";
     $passwd="root";
     $port="3306";
     $dbname="dbname";
     $talbe="tablename";
     $c=0;$cc=0;
     $st=microtime_float();
     $link=mysql_connect($server,$user,$passwd);
     if(!$link) {
              die("Couldnot connect: " . mysql_error());
     }
     else echo "Connected successfully <br>";
     mysql_select_db("catx",$link);
     $handle= @fopen("sq.txt", "r");
     
     while((fgets($handle, 256)) !== false) {
              $buffer[$c]= fgets($handle, 256);
              $c++;
              if(0==$c%5978){
                   $c=0;$start_c="("";$end_c="");";
                   $va="";
                   $kh=""),("";//括号
                       for($i=0;$i<5978;$i++){
                       $va=$va+$buffer[$i].$kh;
                          }
                   $sql="insertinto tablename(name) values".$start_c.$va.$end_c;
                   mysql_query($sql);
              }
              $cc++;
     }     
     $et=microtime_float();
     $t=$et-$st;
     echo"Totaltime $t seconds. <br>";
     echo"insert into talbe ",$talbe,"",$cc,"times; <br>";
     
     functionmicrotime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
?>MySQL的table is read only 解决方法用php将某个 文件夹下的所有文件的 文件名存入MySQL数据库中相关资讯      MySQL数据库 
  • MySQL数据库重命名的方法  (06/16/2015 20:17:43)
  • 10款最好用的MySQL数据库客户端图  (01/07/2015 15:05:35)
  • Linux系统入门学习:命令行创建一  (10/11/2014 07:29:28)
  • MySQL之终端(Terminal)管理数据  (03/02/2015 17:03:41)
  • C语言访问MySQL数据库的方法  (11/17/2014 23:10:15)
  • 给Linux用户的11个高级MySQL数据库  (08/15/2014 16:41:16)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图