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作的文本留言本的例子(二)
Oct 09 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
PHP JSON 数据解析代码
May 26 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
php多进程应用场景实例详解
Jul 22 PHP
php实现断点续传大文件示例代码
Jun 19 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php简单截取字符串代码示例
2016/10/19 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
Vue.directive使用注意(小结)
2018/08/31 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
JS获取当前时间戳方法解析
2020/08/29 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
深入浅析Python传值与传址
2018/07/10 Python
Python错误处理操作示例
2018/07/18 Python
python for循环remove同一个list过程解析
2019/08/14 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
毕业自我鉴定范文
2013/11/06 职场文书
担保书怎么写
2014/04/01 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
企业介绍信范文
2015/01/30 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
详解Python requests模块
2021/06/21 Python