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 相关文章推荐
PHP读写文件的方法(生成HTML)
Nov 27 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
php将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
解析php时间戳与日期的转换
Jun 06 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 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
thinkphp四种url访问方式详解
2014/11/28 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
php银联网页支付实现方法
2015/03/04 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
js格式化时间的方法
2015/12/18 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
ipad上运行python的方法步骤
2019/10/12 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
python实现ping命令小程序
2020/12/28 Python
Python对excel的基本操作方法
2021/02/18 Python
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
公关关系专员的自我评价分享
2013/11/20 职场文书
学生处主任岗位职责
2013/12/01 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
使用pytorch实现线性回归
2021/04/11 Python
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python