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 相关文章推荐
用mysql内存表来代替php session的类
Feb 01 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
PHP empty函数报错解决办法
Mar 06 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
php简单实现多语言切换的方法
May 09 PHP
PHP html_entity_decode()函数讲解
Feb 25 PHP
Laravel修改验证提示信息为中文的示例
Oct 23 PHP
CI框架简单分页类用法示例
Jun 06 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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中的foreach函数
2013/08/31 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
python Pexpect模块的使用
2020/12/25 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
给校长的建议书400字
2014/05/15 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
临床医学专业求职信
2014/08/08 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers