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 相关文章推荐
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php通用防注入程序 推荐
Feb 26 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
深入分析PHP优化及注意事项
Jul 04 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
php中文件上传的安全问题
2006/10/09 PHP
PHP的栏目导航程序
2006/10/09 PHP
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
PHP4实际应用经验篇(6)
2006/10/09 PHP
php中文字符截取防乱码
2008/03/28 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
载入进度条 效果
2006/07/08 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
javascript 实现map集合
2015/04/03 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
机器学习10大经典算法详解
2017/12/07 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python pymysql库的常用操作
2020/10/16 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
幼儿园父亲节活动方案
2014/03/11 职场文书
付款委托书范本
2014/10/05 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript