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程序
Oct 09 PHP
PHP 图片上传代码
Sep 13 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP生成推广海报的方法分享
Apr 22 PHP
laravel请求参数校验方法
Oct 10 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摘要生成函数(无乱码)
2012/02/04 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
js post提交调用方法
2014/02/12 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Python3列表List入门知识附实例
2020/02/09 Python
python 利用zmail库发送邮件
2020/09/11 Python
Django admin组件的使用
2020/10/24 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
幼儿园中秋节活动方案
2014/02/06 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
党员领导干部承诺书
2014/05/28 职场文书
书法社团活动总结
2015/05/07 职场文书
喋血孤城观后感
2015/06/08 职场文书
医院病假条怎么写
2015/08/17 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python