php实现文本数据导入SQL SERVER

5年以前  |  阅读数:834 次  |  编程语言:PHP 

我测试是支持的CSV,SQL,TXT

其实其他格式也可以,只不过我用不到而已

速度是差不多是每秒一万吧


    <?php
    set_time_limit(0);
    ignore_user_abort(true);
    include('sgk.php');
    echo "<br><br>";
    ?>
    <?php
    function array_iconv($data,$output = 'GBK') {
     $encode_arr = array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP');
     $encoded = mb_detect_encoding($data, $encode_arr);//自动判断编码
     if (!is_array($data)) {
     return mb_convert_encoding($data, $output, $encoded);
     }
     else {
     foreach ($data as $key=>$val) {
      if(is_array($val)) {
      $data[$key] = array_iconv($val, $input, $output);
      } else {
      $data[$key] = mb_convert_encoding($data, $output, $encoded);
      }
     }
     return $data;
     }
    }
    function microtime_float(){ 
      return microtime(true); 
    } 
    if ($_SESSION['id']<>''){
    if (@$_POST["submit"]<>""){
    if ((($_FILES["file"]["type"] == "text/plain")
    || ($_FILES["file"]["type"] == "application/vnd.ms-excel") || ($_FILES["file"]["type"] == "application/octet-stream")
    || ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
    && ($_FILES["file"]["size"] < 198102805))
     {
     if ($_FILES["file"]["error"] > 0)
      {
      echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
      }
     else
      {
      $name=$_FILES["file"]["name"];
      $name=iconv('utf-8', 'GB2312//IGNORE', $_FILES['file']['name']); 
      echo "Upload: " . $_FILES["file"]["name"] . "<br />";
      echo "Size: " . ($_FILES["file"]["size"] / 1048576) . " Mb<br />";
      $exit= pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
      $exit='.' .$exit;

        if ($exit==".asp" or $exit==".php" or $exit==".jsp" OR $exit==".aspx"){
      echo "我擦,你想做什么?";
      exit;
      }
      $size=filesize($_FILES["file"]["tmp_name"]);
       $_FILES["file"]["name"]=md5($_FILES["file"]["name"].$size).$exit;
      if (file_exists("uploadhehe/" . $_FILES["file"]["name"]))
       {
       echo $_FILES["file"]["name"] . " 已经存在 ";
       }
      else
       {
       move_uploaded_file($_FILES["file"]["tmp_name"],
       "uploadhehe/" . $_FILES["file"]["name"]);
       echo "<br>开始自动处理文件<br>";
       $begin = microtime_float();
    $file="uploadhehe/" . $_FILES["file"]["name"];
    $handle = @fopen($file, "r");
    //$handle=array_iconv('utf-8','gbk',$handle);
    $total=0;
    $over=0;
    if ($handle) {
      $sql="INSERT INTO [dbo].[own_user_data1] ([Name],[Context],[md5],[data]) VALUES";
      $num=0;
      $_FILES['file']['name']=iconv('utf-8', 'GB2312//IGNORE', $_FILES['file']['name']); 
      while (!feof($handle)) {
        $buffer = fgets($handle, 2000);
        $buffer=str_replace("\n", "", $buffer);
        $line_array=explode("\r\n", $buffer);
        $Context=htmlspecialchars(addslashes($line_array[0]));
        $Context=str_replace("'", ',', $Context);
        $Context=str_replace('"', ',', $Context);
        $Context=array_iconv($Context);
        $date=date('y-m-d h:i:s',time());
        if($num<999){
        $sql.="('{$name}','{$Context}','{$_FILES['file']['name']}','{$date}'),"; 
        }else{
        $sql.="('{$name}','{$Context}','{$_FILES['file']['name']}','{$date}')"; 
        $a=sqlsrv_query($conn,$sql);
        // if( $a === false ) {
       // die( print_r( sqlsrv_errors(), true));
    // }
        $num=0;
        $sql="INSERT INTO [dbo].[own_user_data1] ([Name],[Context],[md5],[data]) VALUES";

        }   
        $num++; 
        $total++;

       }
     } 
    fclose($handle);
    $sql1="INSERT INTO [dbo].[own_user_info] ([uid],[md5],[date],[name],[size],[gold]) VALUES ('{$_SESSION["id"]}','{$_FILES["file"]["name"]}','{$date}','{$name}','{$total}','1')";
    sqlsrv_query($conn,$sql1);
    if( $a === false ) {
       die( print_r( sqlsrv_errors(), true));
    }
    //处理没有插入到数据库的记录
    if(substr($sql, strlen($sql)-1,1)==","){
      $sql=substr($sql, 0,strlen($sql)-1);
      sqlsrv_query($conn,$sql);
    }
    $end = microtime_float();
    $time = $end-$begin;
    echo "共导入{$total}条记录,耗时{$time}秒";

       }
      }
     }
    else
     {
     echo "上传失败!";

     }
    }
    }else{
     header("Location: login.php"); 
    }
    ?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例