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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
thinkphp实现图片上传功能
Jan 13 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 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
PHP中的array数组类型分析说明
2010/07/27 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
js实现随机抽奖
2020/03/19 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
心理健康课教学反思
2014/02/13 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
保安公司服务承诺书
2014/05/28 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS