首页 > 开发 > PHP > 正文

php实现文本数据导入SQL SERVER

2024-05-04 23:35:18
字体:
来源:转载
供稿:网友

php将文本文件导入mysql我们经常遇到,但是如果是导入到sqlserver又应该如何操作呢,下面就给大家分享一下本人的操作方法,感觉效率还不错,这里推荐给大家。

我测试是支持的CSV,SQL,TXT

其实其他格式也可以,只不过我用不到而已

速度是差不多是每秒一万吧

 

 
  1. <?php 
  2. set_time_limit(0); 
  3. ignore_user_abort(true); 
  4. include('sgk.php'); 
  5. echo "<br><br>"
  6. ?> 
  7. <?php 
  8. function array_iconv($data,$output = 'GBK') { 
  9. $encode_arr = array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP'); 
  10. $encoded = mb_detect_encoding($data$encode_arr);//自动判断编码 
  11. if (!is_array($data)) { 
  12. return mb_convert_encoding($data$output$encoded); 
  13. else { 
  14. foreach ($data as $key=>$val) { 
  15. if(is_array($val)) { 
  16. $data[$key] = array_iconv($val$input$output); 
  17. else { 
  18. $data[$key] = mb_convert_encoding($data$output$encoded); 
  19. return $data
  20. function microtime_float(){  
  21. return microtime(true);  
  22. }  
  23. if ($_SESSION['id']<>''){ 
  24. if (@$_POST["submit"]<>""){ 
  25. if ((($_FILES["file"]["type"] == "text/plain"
  26. || ($_FILES["file"]["type"] == "application/vnd.ms-excel") || ($_FILES["file"]["type"] == "application/octet-stream"
  27. || ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) 
  28. && ($_FILES["file"]["size"] < 198102805)) 
  29. if ($_FILES["file"]["error"] > 0) 
  30. echo "Return Code: " . $_FILES["file"]["error"] . "<br />"
  31. else 
  32. $name=$_FILES["file"]["name"]; 
  33. $name=iconv('utf-8''GB2312//IGNORE'$_FILES['file']['name']);  
  34. echo "Upload: " . $_FILES["file"]["name"] . "<br />"
  35. echo "Size: " . ($_FILES["file"]["size"] / 1048576) . " Mb<br />"
  36. $exitpathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION); 
  37. $exit='.' .$exit
  38.  
  39. if ($exit==".asp" or $exit==".php" or $exit==".jsp" OR $exit==".aspx"){ 
  40. echo "我擦,你想做什么?"
  41. exit
  42. $size=filesize($_FILES["file"]["tmp_name"]); 
  43. $_FILES["file"]["name"]=md5($_FILES["file"]["name"].$size).$exit
  44. if (file_exists("uploadhehe/" . $_FILES["file"]["name"])) 
  45. echo $_FILES["file"]["name"] . " 已经存在 "
  46. else 
  47. move_uploaded_file($_FILES["file"]["tmp_name"], 
  48. "uploadhehe/" . $_FILES["file"]["name"]); 
  49. echo "<br>开始自动处理文件<br>"
  50. $begin = microtime_float(); 
  51. $file="uploadhehe/" . $_FILES["file"]["name"]; 
  52. $handle = @fopen($file"r"); 
  53. //$handle=array_iconv('utf-8','gbk',$handle); 
  54. $total=0; 
  55. $over=0; 
  56. if ($handle) { 
  57. $sql="INSERT INTO [dbo].[own_user_data1] ([Name],[Context],[md5],[data]) VALUES"
  58. $num=0; 
  59. $_FILES['file']['name']=iconv('utf-8''GB2312//IGNORE'$_FILES['file']['name']);  
  60. while (!feof($handle)) { 
  61. $buffer = fgets($handle, 2000); 
  62. $buffer=str_replace("/n"""$buffer); 
  63. $line_array=explode("/r/n"$buffer); 
  64. $Context=htmlspecialchars(addslashes($line_array[0])); 
  65. $Context=str_replace("'", ',', $Context); 
  66. $Context=str_replace('"'','$Context); 
  67. $Context=array_iconv($Context); 
  68. $date=date('y-m-d h:i:s',time()); 
  69. if($num<999){ 
  70. $sql.="('{$name}','{$Context}','{$_FILES['file']['name']}','{$date}'),";  
  71. }else
  72. $sql.="('{$name}','{$Context}','{$_FILES['file']['name']}','{$date}')";  
  73. $a=sqlsrv_query($conn,$sql); 
  74. // if( $a === false ) { 
  75. // die( print_r( sqlsrv_errors(), true)); 
  76. // } 
  77. $num=0; 
  78. $sql="INSERT INTO [dbo].[own_user_data1] ([Name],[Context],[md5],[data]) VALUES"
  79.  
  80. }  
  81. $num++;  
  82. $total++; 
  83.  
  84. }  
  85. fclose($handle); 
  86. $sql1="INSERT INTO [dbo].[own_user_info] ([uid],[md5],[date],[name],[size],[gold]) VALUES ('{$_SESSION["id"]}','{$_FILES["file"]["name"]}','{$date}','{$name}','{$total}','1')"
  87. sqlsrv_query($conn,$sql1); 
  88. if$a === false ) { 
  89. die( print_r( sqlsrv_errors(), true)); 
  90. //处理没有插入到数据库的记录 
  91. if(substr($sqlstrlen($sql)-1,1)==","){ 
  92. $sql=substr($sql, 0,strlen($sql)-1); 
  93. sqlsrv_query($conn,$sql); 
  94. $end = microtime_float(); 
  95. $time = $end-$begin
  96. echo "共导入{$total}条记录,耗时{$time}秒"
  97.  
  98. else 
  99. echo "上传失败!"
  100.  
  101. }else
  102. header("Location: login.php");  
  103. ?> 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表