php实现文本数据导入SQL SERVER


Posted in PHP onMay 17, 2015

我测试是支持的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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
PHP 金额数字转换成英文
May 06 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
PHP工厂模式简单实现方法示例
May 23 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 PHP
php中PDO方式实现数据库的增删改查
May 17 #PHP
PHP图像处理类库及演示分享
May 17 #PHP
递归实现php数组转xml的代码分享
May 14 #PHP
php编写批量生成不重复的卡号密码代码
May 14 #PHP
php编写的抽奖程序中奖概率算法
May 14 #PHP
深入浅出php socket编程
May 13 #PHP
PHP中的traits简单使用实例
May 13 #PHP
You might like
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
Python使用turtule画五角星的方法
2015/07/09 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
用python与文件进行交互的方法
2018/03/01 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Python输出指定字符串的方法
2020/02/06 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
学校募捐倡议书
2014/05/14 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
离婚协议书范文2015
2015/01/26 职场文书
小学数学教学反思范文
2016/02/16 职场文书