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 相关文章推荐
Smarty安装配置方法
Apr 10 PHP
php str_pad 函数用法简介
Jul 11 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
php 函数使用可变数量的参数方法
May 02 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
linux iconv方法的使用
2011/10/01 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php生成短域名函数
2015/03/23 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
js简单抽奖代码
2015/01/16 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
公务员总结性个人自我评价
2013/12/05 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
详细总结Python常见的安全问题
2021/05/21 Python
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
详解Python描述符的工作原理
2021/06/11 Python
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
nginx访问报403错误的几种情况详解
2022/07/23 Servers